-1

私はmysqliの準備されたステートメントのテクニックを学び始め、これらの行に固執しました:

include 'config.php';
$location=$_SESSION['cl'];
$sql = $db->prepare("SELECT * FROM locations WHERE loc LIKE ?");
$sql -> bind_param('s',$location);
$sql -> execute();
$sql->store_result();
$sql -> bind_results($results);
while($sql->fetch()){
echo $results;
} 

誰が何が間違っているのか説明できますか?

4

1 に答える 1

2

あなたの最大かつ何よりの問題は、エラー報告の欠如です

これは、この特定の問題だけでなく、PHP での経験全体を台無しにします。
何か問題が発生するたびに、PHP は何が起こったのか、誰の責任なのかを教えてくれます。任せた場合のみ。そして、あなたは常にそうすべきです。

ライブ サイトではエラー ログを確認する必要があるため、設定を変更する必要があります。

error_reporting(E_ALL);
ini_set('display_errors',0);
ini_set('log_errors',1);

一方、ローカルの開発サーバーでは、画面上でエラーを表示しても問題ありません。

error_reporting(E_ALL);
ini_set('display_errors',1);

エラーメッセージが表示された瞬間、問題は解決しました。(ただし、1つだけです。別のものが続きます)

また、接続config.php 前に次の行を追加します。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

mysql側からすべてのエラーが通知される

また、文字列比較に LIKE を使用しないでください。クエリは次のようにする必要があります。

SELECT loc FROM locations WHERE loc = ?
于 2013-09-02T17:16:07.100 に答える