Php 向PDO sql语句动态添加WHERE参数

Php 向PDO sql语句动态添加WHERE参数,php,mysql,pdo,Php,Mysql,Pdo,我需要使用PDO在PHP中构建一个SQL语句,WHERE子句中的值数量是动态的 e、 g 在本例中,我比较的where子句中有两个类别,但可能不止两个,因此我不能仅使用:category1和:category2作为名称 我尝试了以下操作,但它给出了一条“一般错误:2031”消息 有什么建议吗?如果有许多类别,请在语句中使用SQL 您可以在此处查看如何将其绑定到阵列: 请参见上述关于IN语句的注释,但如果您仍计划使用动态生成的where零件,则应使用问号(?)或为每个PDO伪变量创建唯一名称: $

我需要使用PDO在PHP中构建一个SQL语句,WHERE子句中的值数量是动态的

e、 g

在本例中,我比较的where子句中有两个类别,但可能不止两个,因此我不能仅使用:category1和:category2作为名称

我尝试了以下操作,但它给出了一条“一般错误:2031”消息


有什么建议吗?

如果有许多类别,请在语句中使用SQL

您可以在此处查看如何将其绑定到阵列:

请参见上述关于IN语句的注释,但如果您仍计划使用动态生成的where零件,则应使用问号(?)或为每个PDO伪变量创建唯一名称:

$where = array("category = ?", "category = ?");
$params = array("abc", "xyz");
$query = "SELECT column1, column2 FROM table WHERE ". implode(" OR ", $where);
$s= $h->prepare($query);
$s->setFetchMode(PDO::FETCH_ASSOC);
$s->execute($params);

阅读此处了解更多详细信息:

感谢您的快速回复。我将研究IN()条件。这应该作为重复标志发布,而不是作为答案发布。@Shadow如果OP不知道
语句中的
,他将无法搜索如何将参数绑定到它。OP无法通过搜索找到其他主题的事实与其问题是重复的无关。将一个问题标记为另一个问题的副本会告诉OP他/她的问题已经在这里得到了回答。你的陈述部分正确,但你应该更加注意你发布的代码
  $where = array("category = :category", "category = :category");
  $params = array("abc", "xyz");
  $query = "SELECT column1, column2 FROM table WHERE ". implode(" OR ", $where);
  $s= $h->prepare($query);
  $s->setFetchMode(PDO::FETCH_ASSOC);
  $s->execute(array_values($params));
$where = array("category = ?", "category = ?");
$params = array("abc", "xyz");
$query = "SELECT column1, column2 FROM table WHERE ". implode(" OR ", $where);
$s= $h->prepare($query);
$s->setFetchMode(PDO::FETCH_ASSOC);
$s->execute($params);