Php larvel:带IN()函数的参数化查询只返回匹配项中的第一个
我正在运行laravel数据库查询:Php larvel:带IN()函数的参数化查询只返回匹配项中的第一个,php,mysql,laravel-4,Php,Mysql,Laravel 4,我正在运行laravel数据库查询: $relatedUsers = DB::select("Select Distinct user_id FROM customerLinks WHERE customer_id IN (?) ", array($currentUserCustomerLinks_csv) ); 变量$currentUserCustomerLinks\u csv包含我要查找的特定客户ID的csv字符串 当我在laravel中运行此查询时,对于与$currentUserCus
$relatedUsers = DB::select("Select Distinct user_id FROM customerLinks WHERE customer_id IN (?) ", array($currentUserCustomerLinks_csv) );
变量$currentUserCustomerLinks\u csv
包含我要查找的特定客户ID的csv字符串
当我在laravel中运行此查询时,对于与$currentUserCustomerLinks\u csv
字符串中的第一个值匹配的记录,只返回用户id
s。csv中的所有其他值都将被忽略
当我直接在mysql数据库中运行相同的查询时,我会得到完整的ID列表
在in()
函数中使用时,将csv字符串传递到数据库外观是否有问题?我在文档中没有看到任何正确执行类似查询的示例
变量$currentUserCustomerLinks\u csv
包含我要查找的特定客户id
的csv字符串
在中使用将不会在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 ) );
更改部分代码,如下所示:
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 ) );
请参阅:
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 ) );
-
- 返回第一个参数在第二个参数中的索引位置
论据
太好了,谢谢您的帮助和文档参考。我不知道FIND_IN_SET函数。