从包含变量一部分的数据库中选择一行

时间:2017-01-30 17:21:00

标签: php mysql arrays

我需要一个MySQL查询来搜索数据库中包含$friend_array变量中包含用户名的任何行。

例如,如果是这种情况:

$friend_array = "ksk,google,bob,steve,dunno,anotheruser";

'帖子'用户名为bob的数据库,那么我想要一个查询来选择它。

此外,如果它可以从友元数组中选择包含用户的所有行,例如,如果在帖子中有行?数据库与来自同一数组的用户(例如,有一行ksk而另一行有steve),那么我希望它们都在查询中被选中。

提前致谢

4 个答案:

答案 0 :(得分:0)

您想使用WHERE IN语句。

SELECT * 
FROM Posts 
WHERE user_name IN ("ksk", "google", "bob", "steve", "dunno", "anotheruser");

答案 1 :(得分:0)

使用IN子句获得结果:

Select * from `tableName` 
Where userName IN ("ksk","google","bob","steve",...)

答案 2 :(得分:0)

喜欢这个

"SELECT * 
FROM Posts 
WHERE user_name IN (".implode(',', array_map(function ($value) { return "'".$value."'"; }, explode(',', $friend_array))).");"

答案 3 :(得分:0)

$friend_array是一个字符串开始,在你的例子中。

让我们的代码:

<?php
    /* if $friend_array is a string  starts from here*/
    $friend_array = "ksk,google,bob,steve,dunno,anotheruser"; // your string
    $friend_array = explode(',', $friend_array); // transform it to array

    /* if $friend_array is an array starts from here */
    //Now prepare a String for SQL IN operator
    $friend_array = implode(', ',array_map(function($a){return "'" . $a . "'";}, $friend_array));

   //the SQL
   $sql = "select * from Posts where user_name in ($friend_array)";
?>