Webサイト開発にPHPを使用する場合、開発者はしばしばいくつかの一般的な間違いに遭遇します。その中で、 PHPの致命的なエラー:未定義関数への呼び出しmysql_query()は比較的典型的なものです。このエラーは通常、データベース拡張機能を正しく使用しないことによって引き起こされます。
PHP 5.5から始めて、 MySQL_*一連の関数は非推奨されており、PHP 7で完全に削除されています。したがって、プロジェクトコードがまだmysql_query()のような古い関数を使用している場合、上記のエラーが発生します。
この問題を解決するには、代わりに正式に推奨されるMySQLIまたはPDO拡張ライブラリを使用する必要があります。
<?php $conn = new mysqli('localhost', 'username', 'password', 'database'); if ($conn->connect_error){ die( 'connectはデータベースへの接続に失敗しました:'。$ conn-> connect_error); } $ sql = 'select * from users'; $ result = $ conn-> query($ sql); if($ result-> num_rows> 0){ while($ row = $ result-> fetch_assoc()){ echo 'username:'。 $ row ['username']。 '、電子メール:'。 $ row ['email']。 '<br> '; } } それ以外 { エコー「ユーザーは見つかりません」。 } $ conn-> close(); ?>
このコードは、MySQLIを使用して接続を確立し、クエリを実行し、結果を出力する方法を示しています。接続が失敗した場合、プロンプトメッセージが返されます。
<?php $dsn = 'mysql:host=localhost;dbname=database'; $username = 'username'; $password = 'password'; try { $conn = new PDO($dsn, $username, $password); $conn-> setAttribute(pdo :: attr_errmode、pdo :: errmode_exception); $ sql = 'select * from users'; $ stmt = $ conn-> query($ sql); while($ row = $ stmt-> fetch(pdo :: fetch_assoc)){ echo 'username:'。 $ row ['username']。 '、電子メール:'。 $ row ['email']。 '<br> '; } } catch(pdoexception $ e){ Echo 'はデータベースに接続できませんでした:'。 $ e-> getMessage(); 出口; } $ conn = null; ?>
PDOを使用すると、MySQLを処理できるだけでなく、複数のデータベースもサポートします。これは、例外メカニズムを介してエラーを処理するためによりスケーラブルで便利です。
PHPの致命的なエラーに遭遇する場合:未定義関数mysql_query()エラーへの呼び出しは、通常、古いmysql拡張機能がPHPバージョンでサポートされなくなったためです。解決策は、コードをMySqliまたはPDOに移行することです。これは、エラーの報告を回避するだけでなく、より強力な機能とより良いセキュリティを享受します。
プロジェクトがまだ古いmysql_*関数を使用している場合、互換性と保守性を確保するために、できるだけ早く新しい拡張機能に更新することをお勧めします。