2017-03-01 8 views
-1

私は出力を返さないMySqlクエリを持っていますが、私が200レコード以下の制限を定義すると、返されます(レコードを返します)。PHPクエリが行を返さない

通常、このクエリは5000レコードを返す必要があります。

問題は私が間違っていることと、すべての行を返すために必要なことです。

このクエリを修正するphp.iniやその他のファイルには設定がありますか?私は200クエリ作品を制限置くが、私はこの制限を削除するならば、私がしようとexand 512メガバイト/ 2048メガバイトにphp.iniのメモリ制限デただし機能しない

をしない場合

getConnection(); 
    $connection = getConnection(); 
    $stmt = $connection->prepare("SELECT * FROM estadoactual limit 200"); 
    $stmt->execute(); 

    $rows = $stmt->fetchAll(); 
    echo json_encode($rows); 

+4

どのようにして200レコードを超えても機能しませんか? PHPバージョン7からmysql_ *拡張機能が削除されました。あなたは現在PDOを使用しています – SpacePhoenix

+2

何がうまくいかないか教えてください。ただ「それはうまくいかない」と言っても、人々はあまり行くことはありません! –

+0

PHPでメモリ制限または実行時間制限に遭っている可能性はありますか?あまりにも多くのものをデバッグする必要があります。エラーログが有効になっており、チェックされていますか? – chris85

答えて

1

json_encodeは、渡された文字列に無効なUTF8シーケンスがある場合、値falseで失敗します。これは実質的にあなたのレコードの1つがASCII以外の文字列を持ち、別の文字エンコーディングが使用されていることを意味します。他にも考えられる理由がありますが、しばしばこれが問題です。

json_encodefalseの場合、check which error occurred with json_last_error_msgとする必要があります。

データベースからデータを読み取るときは、必ずutf-8エンコーディングを使用してください。あなたの場合、この関数を呼び出す必要があります:

mysql_query("SET CHARACTER SET utf8") 

...クエリを実行する前に。

言われているように、これらのmysql_関数は数年前に廃止され、最新バージョンのPHPではサポートされなくなったため、コードをmysqliまたはPDOに変換してください。

関連する問題