PHPでmysqlデータベースとPDOを接続しようとしています。すべてが自己構築された腕のシステム上にある。CC PHP - > Mysql dbへの接続が中止されました:エラーメッセージ
私はPHPで私のSQLを照会した場合:
$sql="SELECT volume FROM measurements ORDER BY ID DESC LIMIT 1;";
はすべて正常に動作しますが、私は、追加項目を追加する場合は、のような:
$sql="SELECT volume , temp , humidity FROM measurements ORDER BY ID DESC LIMIT 1;";
は私空白のページを取得。すべての、私のMySQLサーバは、このにErrorMessageをもたらす任意のエラーメッセージ
を持っていないだろう、>
- PHPログは
- はPHPの追加のエラー・メッセージをアクティブにエラーを示しません私のウェブページを開こうとすると時間があります: 2015-03-31T22:09:09.886345Z 26 [注]接続が中断されましたXXX:データベース: 'user'ホスト: 'localhost'(通信パケットを読み取る際にエラーが発生しました)
もし私がnetstat -a | grepのmysqlの は彼らが私のようなのmysqlから多くのオープンな接続を示しています。
TCPを0 0はlocalhost:49050はlocalhost:mysqlのTIME_WAIT
これは私の最小限のPHPコードです:
<?php ini_set('display_errors', 'On'); error_reporting(E_ALL | E_STRICT); try { $conn = new PDO("mysql:host=127.0.0.1;dbname=fair_database", "root", "12345"); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql="SELECT volume , temp , humidity, co2, pressure FROM measurements ORDER BY ID DESC LIMIT 1;"; foreach ($conn->query($sql) as $row) { $first_volume = number_format ($row['volume'],1); $first_temp = number_format ($row['temp'],1); $first_humidity = number_format ($row['humidity'],1); $first_co2 = number_format ($row['co2'],1); $first_pressure = number_format ($row['pressure'],0); } $conn=null; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?>
と追加のデバッグ用:
<?php // ---------------------------------------------------------------------------------------------------- // - Display Errors // ---------------------------------------------------------------------------------------------------- ini_set('display_errors', 'On'); ini_set('html_errors', 0); // ---------------------------------------------------------------------------------------------------- // - Error Reporting // ---------------------------------------------------------------------------------------------------- error_reporting(-1); // ---------------------------------------------------------------------------------------------------- // - Shutdown Handler // ---------------------------------------------------------------------------------------------------- function ShutdownHandler() { if(@is_array($error = @error_get_last())) { return(@call_user_func_array('ErrorHandler', $error)); }; return(TRUE); }; register_shutdown_function('ShutdownHandler'); // ---------------------------------------------------------------------------------------------------- // - Error Handler // ---------------------------------------------------------------------------------------------------- function ErrorHandler($type, $message, $file, $line) { $_ERRORS = Array( 0x0001 => 'E_ERROR', 0x0002 => 'E_WARNING', 0x0004 => 'E_PARSE', 0x0008 => 'E_NOTICE', 0x0010 => 'E_CORE_ERROR', 0x0020 => 'E_CORE_WARNING', 0x0040 => 'E_COMPILE_ERROR', 0x0080 => 'E_COMPILE_WARNING', 0x0100 => 'E_USER_ERROR', 0x0200 => 'E_USER_WARNING', 0x0400 => 'E_USER_NOTICE', 0x0800 => 'E_STRICT', 0x1000 => 'E_RECOVERABLE_ERROR', 0x2000 => 'E_DEPRECATED', 0x4000 => 'E_USER_DEPRECATED' ); if([email protected]_string($name = @array_search($type, @array_flip($_ERRORS)))) { $name = 'E_UNKNOWN'; }; return(print(@sprintf("%s Error in file \xBB%s\xAB at line %d: %s\n", $name, @basename($file), $line, $message))); }; $old_error_handler = set_error_handler("ErrorHandler"); // other php code ?>
結果は同じで、空白のページだけでPHPエラーはありません。他のエラーは、PHPエラーログファイルでは正常にログになります。 :-(
私は最大のパッケージを拡大し、MySQLからの時間を待って、何も助けしようとしていどのような私はこのケースで行うことができます
編集ありがとうござい :私は変更何多くの障害を発見?私の問題を見つける
正しく動作するかどうかをこのコードから予測しますか? –
pdo(msqliはサポートされていません)でデータベースを照会し、ボリューム、温度、湿度、二酸化炭素と圧力から最後の値を取得します。これを変数に保存し、後で私のウェブサイトにエコーします。 Mysqlコンソールで、私のクエリをうまく動作させてください: mysql>ボリューム、温度、湿度からSELECTを選択してください。ORDER BY ID DESC LIMIT 1; + -------- + ------ + ---------- + |ボリューム|一時|湿度| + -------- + ------ + ---------- + | 59.76 | 1.88 | 13.7 | + -------- + ------ + ---------- + セット内の1行(0.00秒) –
@ MarkusF。、あなたの例から、 '$ first_co2 = number_format($ row ['co2']、1);'しかし、あなたはselectクエリで 'co2'を宣言していません。 – andrew