php - 带有 IN() 条件的 WordPress 准备好的语句

标签 php mysql wordpress prepared-statement in-clause

我在一个字符串中有三个值,如下所示:

$villes = '"paris","fes","rabat"';

当我将它输入到这样的准备好的语句中时:

$sql    = 'SELECT distinct telecopie FROM `comptage_fax` WHERE `ville` IN(%s)';
$query  = $wpdb->prepare($sql, $villes);

echo $query; 显示:

SELECT distinct telecopie FROM `comptage_fax` WHERE `ville` IN('\"CHAPELLE VIVIERS \",\"LE MANS \",\"QUEND\"')

它没有将字符串写成三个独立的值——它只是一个双引号被转义的字符串。

如何在 WordPress 中正确实现具有多个值的准备语句?

最佳答案

试试这个代码:

// Create an array of the values to use in the list
$villes = array("paris", "fes", "rabat");    

// Generate the SQL statement.
// The number of %s items is based on the length of the $villes array
$sql = "
  SELECT DISTINCT telecopie
  FROM `comptage_fax`
  WHERE `ville` IN(".implode(', ', array_fill(0, count($villes), '%s')).")
";

// Call $wpdb->prepare passing the values of the array as separate arguments
$query = call_user_func_array(array($wpdb, 'prepare'), array_merge(array($sql), $villes));

echo $query;

关于php - 带有 IN() 条件的 WordPress 准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10634058/

相关文章:

php - 我如何使用 SQL 和 PHP 更新这些表条目?

PHP PayPal 支付验证/HTTP POST?

php - 避免硬编码嵌套 foreach 循环

mysql - 如何解决 'where clause' 许多子句中的未知列

css - WordPress 导航中的 Span 标签问题

PHP 将 XML 转换为 JSON

php - 我想要 count 的值并想在其他查询中使用它。这怎么可能?

wordpress - 如何去除联系表 7 中的跨度 wrapper ?

php - 根据购物车总计(小计 + 运费)计算费用,而不将其添加到 WooCommerce 中的订单总值(value)

php - 10个不同的域名,2个php文件,仅数据库查询更改