php - 拉拉维尔 : Parameterized query with IN() function only returns first in match

标签 php mysql laravel-4

我正在运行 Laravel 数据库查询:

 $relatedUsers = DB::select("Select Distinct user_id FROM customerLinks WHERE customer_id IN (?) ", array($currentUserCustomerLinks_csv) );

变量 $currentUserCustomerLinks_csv 保存我正在查找的特定 customer_ids 的 csv 字符串。

当我在 laravel 中运行此查询时,仅返回与 $currentUserCustomerLinks_csv 字符串中第一个值匹配的记录的 user_id。 csv 中的所有其他值都将被忽略。

当我直接在 mysql 数据库中运行相同的查询时,我得到了完整的 id 列表。

IN() 函数中使用时,将 csv 字符串传递到数据库外观是否有问题?我在文档中没有看到任何执行类似查询的正确方法的示例。

最佳答案

The variable $currentUserCustomerLinks_csv holds a csv string of the specific customer_ids I'm looking for.

使用 IN 不会在 csv 输入上给出正确的结果。
FIND_IN_SET 可用于此类输入值。
返回的任何正 int 都表示找到了匹配项。

示例:

mysql> select FIND_IN_SET( 'in', 'Rav,in,der' ) found_indx_1
    ->      , FIND_IN_SET( 'no', 'Rav,in,der' ) found_indx_2;
+--------------+--------------+
| found_indx_1 | found_indx_2 |
+--------------+--------------+
|            2 |            0 |
+--------------+--------------+

更改部分代码如下:

$sql = "select distinct user_id from customerLinks 
         where FIND_IN_SET ( customer_id, ? ) > 0";  
$relatedUsers = DB::select( $sql, array( $currentUserCustomerLinks_csv ) );

引用:

关于php - 拉拉维尔 : Parameterized query with IN() function only returns first in match,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23839972/

相关文章:

php - 使用模型进行数据库操作时,Laravel dd/mm/yyyy 到 yyyy/mm/dd/conversion

php - 拉维尔 4 : Config get returns array or null

php - 如何使用 PHP 从字符串中删除主机名?

php - 动态更新mysql表

MySQL 事件调度

mysql - 像这样创建一个日历数据库表

javascript - 在 laravel 中获取 ajax 发布的数据?

php - 根据 WooCommerce 中的产品自定义字段和产品类别隐藏添加到购物车按钮

php - 打开购物车显示已弃用 : mysql_connect() message on top

php - 如何仅推出表中唯一行的 JSON?