在 PHP MYSQL
中创建过滤器搜索时获取所有行时遇到问题例如,我的items表包含以下数据:
域: 的标题
三星Galaxy
q-mobile S5系列
htc新经典品牌
...
域 品牌
三星
Q-移动
HTC
...
当用户选择查看所有品牌的数据时,如何获取行?我现在使用的查询是:
$sql = "SELECT * FORM table WHERE title = '$title' AND brand = '$brand' LIMIT 0,10";
谢谢
答案 0 :(得分:0)
您可以使用IN()
构建一个准备好的语句,如下所示:
为IN
- 子句中的每个元素构建一个包含占位符的数组
implode()
查询中的占位符数组,由“,”
创建一个您想在查询中拥有的值数组(第3行,我不知道您接收的是哪种形式的值,但这是您可以使用它们的方式)
执行时将IN
- 子句的值与您WHERE
- 子句中可能包含的其他参数合并。 确保它们的顺序正确。
代码:
$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));
添加您要查询的数据的验证。