2013-10-05 23 views
1
-----ID 
     1 
     5 
     1,6 
     3 
     4 
     1,36 
     1 

我有这些'1,6,36'要搜索的号码。在多个号码字段中搜索多个号码

应该找到包含(在上表中例如共4个列)1或6或36中任行

我试图

FIND_IN_SET(ID, '1,6,36')

ID IN (1,6,36) 

他们都不工作。

任何想法如何实现这一目标?

回答

0

你要做称为在SQL查询,应该按如下步骤去做:

$id_array = array(1, 6, 36) 
$sql = "SELECT * FROM table WHERE id IN ($id_array)"; 
$search = mysqli_query($sql_connection, $sql); 

然后显示,你必须做一个PHP循环像如下:

while($ids = mysqli_fetch_array($search)) { 
    echo '<h3>'.$ids['field_from_db'].'</h3><br />'; 
} 
+0

所以它似乎没有办法做1 mysql行 –

+0

这样的工作不是我所知道的,MySql,虽然是惊人的,也是一个痛苦,学习如何编码和使用技巧来解决。即使在较新版本的PHP和MySql上,此代码也是(不保证,但该死的关闭)。 –

+0

其他问过同一问题的人在我的搜索中有相同的答案。看起来你必须将数据库作为一个数组来搜索,过去我使用相同的代码来搜索帖子中的单词。它起作用了,但起初它有点痛苦。 –

1
FIND_IN_SET(1, ID) OR 
FIND_IN_SET(6, ID) OR 
FIND_IN_SET(36, ID) 
+0

数据“1,6,36”正在动态创建,所以它可能是1,5或6,24,56或4,54,23,2等这就是为什么这不起作用 –

+0

您可以构建SQL从搜索数组中动态获取。 – Barmar