使用MySQL IN()与PHP和PDO MySQL的IN()函数可以用来在查询中检索多个值。在PHP中,我们可以使用PDO(PHP数据对象)扩展来与MySQL数据库进行交互。 使用PDO和MySQL的IN()函数,我们可以通过以下步骤执行查询: 1. 建立与数据库的连接: ``` $dsn = 'mysql:host=localhost;dbname=database'; $username = 'username'; $password = 'password'; try { $con

25 浏览
0 Comments

使用MySQL IN()与PHP和PDO MySQL的IN()函数可以用来在查询中检索多个值。在PHP中,我们可以使用PDO(PHP数据对象)扩展来与MySQL数据库进行交互。 使用PDO和MySQL的IN()函数,我们可以通过以下步骤执行查询: 1. 建立与数据库的连接: ``` $dsn = 'mysql:host=localhost;dbname=database'; $username = 'username'; $password = 'password'; try { $con

我正在开发一个网络服务,其中一个参数是设备ID的列表(energy_mon_id)。列表是用逗号分隔的,例如0,1,2(它还接受另外两个参数dateFrom和dateTo)。

我的预处理语句如下所示:

$this->sql = "SELECT $vars FROM $table "
                . "WHERE energy_mon_id IN(:energy_mon_id) AND CONCAT(date, ' ', time) "
                . "BETWEEN :dateFrom AND :dateTo "
                . "$group ORDER BY $orderBy $limit";

问题是,它没有将这些逗号分隔的字符识别为独立的字符,而是被解释为一个完整的字符串(我认为是这样)。我试着按照这个帖子的方法操作。

我已经搜索过并找到了提供完全相同解决方案的情况(似乎对其他人都有效)。我感到非常困惑,我从来没有直接提出问题,所以这是我第一次发帖!

提前感谢您的帮助。

0
0 Comments

问题的出现原因是在使用MySQL的IN()函数时,传递参数(:energy_mon_id)导致的。解决方法是使用MySQL的find_in_set()函数来替代IN()函数。

具体代码如下:

WHERE find_in_set(energy_mon_id, :energy_mon_id)

使用这个简单的修复方法,可以解决类似问题。

0