gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:15:32 24 4
gpt4 key购买 nike

PHP MYSQL 中创建过滤器搜索时获取所有行时遇到问题

例如,我的项目表包含以下数据:

域:标题


三星银河

q-mobile S5系列

htc新经典品牌

...

品牌


三星

q-手机

宏达电

...

当用户选择查看所有品牌的数据时,如何获取行?我现在使用的查询是:

$sql = "SELECT * FORM table WHERE title  = '$title' AND brand  = '$brand' LIMIT 0,10";

谢谢

最佳答案

您可以像这样使用 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));

添加对您正在查询的数据的验证。

关于使用 IN 时,php mysql 查询匹配表中的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38419866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com