0

Web ページで以下の PHP を使用すると「クエリに失敗しました」というメッセージが表示されますがOR column2 LIKE '%$searchterm%'、クエリから削除すると問題なく動作します。私はすでに問題をグーグルで試し、ダミーのマニュアルを調べました。データベース テーブルには、間違いなく column_2 に検索語が含まれています。


/* send this query to MySQL database */
$query = "SELECT * FROM table WHERE column_1 LIKE '%$searchterm%' OR desc LIKE '%$searchterm%'";

/* process query results */
$result = mysqli_query($cxn,$query) or die ("query failed");
$row = mysqli_fetch_assoc($result);

extract($row);

/* create HTML for web broswer to see */
echo "Column 1 value: $column_1<br><br>";
echo "Column 2 value: $column_2<br><br>";
echo "Column 3 value: $column_3<br><br>";
4

2 に答える 2

0

解決!クエリでは、ORステートメントの左側にあるオブジェクト名をバッククォートで囲む必要がありましたが、他のオブジェクト名にはまっすぐな一重引用符が必要でした。

$query = "SELECT * FROM `table` WHERE `column_1` LIKE '%$searchterm%' OR 'column_2' LIKE '%$searchterm%'";


phpMyAdmin を使用してクエリを PHP コードに変換すると、バッククォートが表示されましたが、 のようにバックスラッシュが追加された部分は無視する必要がありました\'%$searchterm%\'。そのため、翻訳ツールによって解決策が導かれましたが、これらのバックスラッシュの理由がわかりません。


また、ステートメントのない単純なクエリは、バッククォートと最小限の引用符がなくても問題なく機能しましたが、バッククォート ルールを呼び出すOR理由がわかりません。OR

于 2012-10-24T06:19:40.847 に答える
-1

これを試すことができます:

$query = "SELECT * FROM table WHERE column_1 LIKE '%$searchterm%' UNION SELECT * FROM table WHERE column_2 LIKE '%$searchterm%'";
于 2012-10-23T19:24:18.043 に答える