PHPを使用した複数列クエリに関するリサーチクエスチョン
P粉242126786
2023-07-26 17:32:50
<p>質問があります。 PHP で POST メソッドを使用して、指定された部分文字列を含むすべてのテキストをクエリする必要があります。たとえば、「a」または「1」のような数字 (整数ではない文字) を入力した場合、その文字または部分文字列を含むものをすべて検索し、可能であればテーブル内のすべての列を確認する必要がありますか?このようなことを試してみましたが、コードが少し面倒です。 </p>
<pre class="brush:php;toolbar:false;"><?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$usersearch = $_POST["usersearch"];
試す {
require_once "includes/dbh.inc.php";
$query = "SELECT * FROM tlattine WHERE
ティポロジア LIKE :usersearch OR
名前 LIKE :usersearch OR
キャラクタリスティック LIKE :usersearch OR
tabstyle LIKE :usersearch OR
tabcolor LIKE :usersearch OR
トップスタイルのような :usersearch または
トップカラーのような :usersearch または
プロビニエンツァ LIKE :usersearch OR
製品の LIKE :usersearch OR
sku LIKE :usersearch
ヒント、プロビニエンツァ、年、ディメンションで注文します;";
$stmt = $pdo->prepare($query);
$stmt->bindParam(":usersearch", $usersearch);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$pdo = null;
$stmt = null;
} キャッチ (PDOException $e) {
die("クエリが失敗しました: " . $e->getMessage());
}
}
それ以外{
header("場所: ../index.php");
}
?></pre>
<p>すでに '%:usersearch%' を使用したり、任意の形式で % を組み合わせたりしようとしましたが、何かが足りないようです。確かにそうですが、見つかりません :(</p>
クエリを見て、パラメータ usersearch を複数回使用していることに気付きました。
PHP ドキュメントで言及されている:
偽装モードを有効にすることを避け、代わりに名前付きプレースホルダーを位置プレースホルダー (':usersearch' の代わりに '?' を使用) に変更して、## を使用することを好みます。
最後にもう 1 つ、列に $usersearch 変数が含まれるようにクエリを実行する場合は、おそらく文字列の先頭と末尾に % を追加する必要があります。# リーリー
リーリー