繁体   English   中英

使用IN时,php mysql查询匹配表中的所有行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM