使用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"];
try {
require_once "includes/dbh.inc.php";
$query = "SELECT * FROM tlattine WHERE
tipologia LIKE :usersearch OR
nome LIKE :usersearch OR
caratteristiche LIKE :usersearch OR
tabstyle LIKE :usersearch OR
tabcolor LIKE :usersearch OR
topstyle LIKE :usersearch OR
topcolor LIKE :usersearch OR
provenienza LIKE :usersearch OR
produttore LIKE :usersearch OR
sku LIKE :usersearch
ORDER BY tipologia, provenienza, year, dimensione;";
$stmt = $pdo->prepare($query);
$stmt->bindParam(":usersearch", $usersearch);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$pdo = null;
$stmt = null;
} catch (PDOException $e) {
die("Query failed: " . $e->getMessage());
}
}
else{
header("Location: ../index.php");
}
?></pre>
<p>已经尝试过使用'%:usersearch%'或以任何形式组合%,但似乎我漏掉了某些东西,我完全确定,但我找不到它 :(</p>
看到你的查询,我注意到你多次使用了参数:usersearch。
PHP文档中提到:
我更倾向于避免启用模拟模式,而是更改命名占位符为位置占位符(使用'?'代替':usersearch'),然后使用
最后一件事,如果你要查询使列包含$usersearch变量,你可能应该在字符串的开头和结尾添加%。