[英]php mysql query match for all rows in table when using IN
在PHP MYSQL中创建过滤器搜索时获取所有行时遇到问题
例如,我的items表包含以下数据:
域名: 标题
三星Galaxy
q-mobile S5系列
HTC新经典品牌
...
域名 品牌
三星
Q-移动
HTC
...
当用户选择查看所有品牌的数据时,如何获取行? 我现在使用的查询是:
$sql = "SELECT * FORM table WHERE title = '$title' AND brand = '$brand' LIMIT 0,10";
谢谢
您可以使用IN()
构建一个准备好的语句,如下所示:
为IN
-clause中的每个元素构建一个包含占位符的数组
implode()
查询中的占位符数组,由“,”分隔
创建一个你想要在查询中拥有的值的数组(第3行,我不知道你接收你的值的形式,但这是你如何使用它们)
在执行时,将IN
-clause的值与您在WHERE
-clause中可能具有的其他参数合并。 确保它们的顺序正确。
码:
$pdo = new PDO('mysql:host=localhost;dbname=stuff;charset=utf8;', 'root', '');
$brands = array('samsung', 'sony', 'dsf', 'q-mobile');
$title = 'du';
$placeholder = array_fill(0, count($brands), '?');
$placeholderString = implode(',', $placeholder);
$sql = 'SELECT * FROM table
WHERE title = ?
AND brand IN (' . $placeholderString . ')';
$stmt = $pdo->prepare($sql);
$stmt->execute(array_merge(array($title), $brands));
添加您要查询的数据的验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.