搜索
使用PHP进行多列查询的研究问题
P粉242126786
P粉242126786 2023-07-26 17:32:50
[PHP讨论组]
<p>我有一个问题。我需要通过在PHP上使用POST方法给定的子字符串来查询包含该子字符串的所有文本。例如,如果我输入一个"a"或者一个类似"1"的数字(字符而不是整数),我需要找到包含该字符或子字符串的所有内容,并检查表中的每一列是否可能?我尝试过像这样的方法,但是代码有些混乱。</p> <pre class="brush:php;toolbar:false;">&lt;?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-&gt;prepare($query); $stmt-&gt;bindParam(":usersearch", $usersearch); $stmt-&gt;execute(); $results = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC); $pdo = null; $stmt = null; } catch (PDOException $e) { die("Query failed: " . $e-&gt;getMessage()); } } else{ header("Location: ../index.php"); } ?&gt;</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"] . "%"
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号