使用PHP进行多列查询的研究问题
P粉242126786
P粉242126786 2023-07-26 17:32:50
0
1
461
<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>
P粉242126786
P粉242126786

全部回复(1)
P粉793532469

看到你的查询,我注意到你多次使用了参数:usersearch。

PHP文档中提到:

我更倾向于避免启用模拟模式,而是更改命名占位符为位置占位符(使用'?'代替':usersearch'),然后使用


$stmt->bindParam(1, $usersearch, PDO::PARAM_STR);
$stmt->bindParam(2, $usersearch, PDO::PARAM_STR);
$stmt->bindParam(3, $usersearch, PDO::PARAM_STR);
// and so on

最后一件事,如果你要查询使列包含$usersearch变量,你可能应该在字符串的开头和结尾添加%。

$usersearch = "%" . $_POST["usersearch"] . "%"
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板