PHPでは、 mysqli :: prepare()は、 MySQLデータベースを使用する際にSQLステートメントを準備するための非常に重要な機能です。多くの場合、特にデータベースの操作が失敗した場合、SQLステートメントの準備プロセスが間違っていないことを確認したいと考えています。 mysqli :: $ errnoは、エラーがあるかどうかを判断するために使用できる属性です。 prepere()メソッドが正常に実行されるかどうかを判断するのに役立ちます。
mysqli :: prepare()は、SQLステートメントを事前に処理するために使用される関数です。前処理の利点は、SQL注入を防ぎ、データベース操作の効率を改善できることです。実際に使用すると、通常、mysqlサーバーによって解析および最適化されたprepare()関数を介してMySQLサーバーにSQLステートメントを送信します。
たとえば、次のコードは、mysqli :: prepare()を使用してSQLステートメントを準備する方法を示しています。
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
// Check connection
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
exit();
}
$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");
?>
mysqli :: prepare()を使用する場合、sqlステートメントにエラーがある場合、 prepare()はfalseを返し、 mysqli :: $ errnoをチェックすることで詳細なエラー情報を取得できます。
<?php
// 準備する SQL 声明
$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");
if ($stmt === false) {
// もし prepare() 戻る false,それは意味します SQL 声明有错误
echo "MySQLi prepare failed. Error number: " . $mysqli->errno . "\n";
echo "Error message: " . $mysqli->error . "\n";
} else {
// もし prepare() 成功,さらなる操作を実行します
echo "SQL prepared successfully!\n";
}
?>
この例では、 prepare()が失敗した場合、 $ mysqli-> errnoはエラーコードを返します。このエラーコードを使用して、障害の理由を理解できます。 $ mysqli->エラーは、開発者が問題をすばやく見つけるのに役立つ特定のエラー情報を提供します。
mysqli :: prepare()実行が失敗すると、 mysqli :: $ errnoはゼロ以外の値に設定されます。一般的なエラーコードは次のとおりです。
1049 :データベースは存在しません。
1054 :フィールドは存在しません(たとえば、selectで使用される列名は間違っています)。
1064 :SQL構文エラー。
1146 :テーブルは存在しません。
これらのエラーコードを使用して、次のような特定の問題を決定できます。
if ($stmt === false) {
switch ($mysqli->errno) {
case 1049:
echo "データベースは存在しません!";
break;
case 1064:
echo "SQL 構文エラー!";
break;
default:
echo "不明なエラー: " . $mysqli->errno;
break;
}
}
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
// 接続を確認してください
if ($mysqli->connect_errno) {
echo "接続に失敗しました: " . $mysqli->connect_error;
exit();
}
// 準備する SQL 声明
$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");
if ($stmt === false) {
// もし prepare() 戻る false,エラーメッセージを印刷します
echo "MySQLi prepare failed. Error number: " . $mysqli->errno . "\n";
echo "Error message: " . $mysqli->error . "\n";
} else {
// もし成功
echo "SQL prepared successfully!\n";
$stmt->close();
}
$mysqli->close();
?>