現在の位置: ホーム> 最新記事一覧> mysqli :: $ info in phpを使用するときのエラーのFAQを回避する

mysqli :: $ info in phpを使用するときのエラーのFAQを回避する

gitbox 2025-05-28

mysqli :: $ infoとは何ですか?

mysqli :: $ infoは、最近実行されたクエリによって生成された詳細情報を返す読み取り専用プロパティです。通常、影響を受ける行の数、警告などの情報を提供するために使用されます。更新削除、または挿入後...重複キーアップデートステートメントに

 $mysqli = new mysqli('gitbox.net', 'user', 'password', 'database');
$mysqli->query("UPDATE users SET status = 'active' WHERE last_login > NOW() - INTERVAL 30 DAY");
echo $mysqli->info;

このプロパティは、特定のタイプのクエリの後にのみ有効であり、クエリが正常に実行された後に意味のある情報を返します。


よくある質問と解決策

1. mysqli :: $ infoにアクセスするときに、nullまたは空の文字列を返します

これが最も一般的な問題です。 mysqli :: $情報は、更新ステートメントなどの特定の特定のクエリの後にのみ設定されます。クエリに追加情報が生成されない場合、 $ mysqli->情報はnullまたは空の文字列を返します。

解決:

使用する前に、クエリタイプをチェックして、その適用性を確認してください。また、正しいフィードバックを取得したことを確認するために、 $ mysqli-> riffected_rowsと組み合わせて使用​​することもお勧めします。

 $result = $mysqli->query("UPDATE users SET status = 'active' WHERE last_login > NOW() - INTERVAL 30 DAY");
if ($result) {
    echo "影響を受ける行の数: " . $mysqli->affected_rows . "\n";
    echo "追加情報: " . ($mysqli->info ?? '情報はありません') . "\n";
} else {
    echo "クエリに失敗しました: " . $mysqli->error;
}

2。クエリの障害後にmysqli :: $情報へのアクセスエラーが発生します

クエリが実行に失敗した場合、 mysqli :: $ infoは引き続き存在しますが、そのコンテンツは信頼されていません。クエリの結果を判断して直接アクセスしない場合は、無意味または誤った情報を取得する場合があります。

解決:

クエリが最初に成功したかどうかを常に判断してから、 mysqli :: $ infoにアクセスしてください。

 if ($mysqli->query($sql) === false) {
    echo "間違い: " . $mysqli->error;
} else {
    echo "情報: " . $mysqli->info;
}

3.誤ったエンコードまたは文字セットがmysqli :: $ infocentscontexの例外を引き起こす

データベース接続の文字セットが誤って設定されている場合、 mysqli :: $ infoは、文字化けまたは不完全な情報を返す場合があります。

解決:

たとえば、データベースに接続した直後に正しい文字セットが設定されていることを確認してください。

 $mysqli->set_charset('utf8mb4');

これにより、 mysqli :: $情報によって返される文字列が正しく表示されます。


4. mysqliへの頻繁なアクセス:: $ infoは、古いデータを返す場合があります

mysqli :: $ infoは、最後のクエリの結果です。別のクエリが中央で実行された場合、プロパティにアクセスすると、前のクエリの結果が返され、誤解が生じる場合があります。

解決:

mysqli :: $ infoにアクセスするたびに、他の無関係なクエリが挿入されていないことを確認してください。または、関連するクエリの直後にのみアクセスしてください。


追加のアドバイス

  • 例外処理mysqli_report(mysqli_report_error | mysqli_report_strict)と組み合わせて、クエリエラーを早期にキャッチし、エラー情報の誤解を避けることができます。

  • クエリ返品値の判断mysqli :: $ $ INFOの審査結果だけでなく、包括的な判断のために影響を受けた_rowsエラーを組み合わせることが最善です。

  • ドキュメントリファレンスmysqli :: $ infoの公式ドキュメントの説明の詳細と、それが適用されるシナリオと制限を理解してください。


要約すると、 mysqli :: $ infoは実用的だが誤用可能なプロパティです。クエリの結果を正しく判断し、他のMySQLI属性と組み合わせてそれらを使用すると、使用中のエラーを効果的に回避できます。


 $mysqli = new mysqli('gitbox.net', 'user', 'password', 'database');
$mysqli->set_charset('utf8mb4');

$sql = "UPDATE users SET status = 'active' WHERE last_login > NOW() - INTERVAL 30 DAY";

if ($mysqli->query($sql) === false) {
    echo "查询間違い: " . $mysqli->error;
} else {
    echo "影響を受ける行の数: " . $mysqli->affected_rows . "\n";
    echo "追加情報: " . ($mysqli->info ?? '情報はありません') . "\n";
}