PHP MySQL查询数据库与字符串/数组问题的结果

时间:2013-11-28 21:22:32

标签: php mysql database string search

我是新手,所以如果我没有正确的短语,请耐心等待。 ; - )

我试图查询数据库。我有一个字符串,可以有1-3个固定值,来自复选框输入表单的内嵌$ _Post [“数组”]。价值观如下:

$string            // values (Berlin, New York, Rome) or (Berlin, Rome) ect.

现在我正在尝试查询数据库,其中每一行(项)都有一个列(字段),其中包含1-3个相同的值。

item1 (New York, Rome)
item2 (Berlin, New York, Rome)
item3 (Rome)

我尝试过这样的查询:

SELECT * FROM 'table' WHERE 'destination' LIKE '%$string%'
or
SELECT * FROM 'table' WHERE 'destination' IN '$string'

虽然两者在理论上都有效,但它们并没有让我得到我想要的结果。以下是我希望从查询中获得的内容:

  

如果$ string有所有3个值,我想显示所有3个项目(不仅仅是item2)。

     

如果$ string有值(罗马),我想显示 item1 item2 和   项目3

     

如果$ string具有值(纽约,柏林),我想显示 item1   和 item2

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

很多 SEB

3 个答案:

答案 0 :(得分:0)

假设您的表名列表是目的地而$ string是表单中的帖子值,您可以尝试FIND_IN_SET

SELECT * FROM  `table` WHERE FIND_IN_SET($string,  `destination` );

答案 1 :(得分:0)

在这个例子中,我得到了table

ID     destination
1      New York, Rome
2      Berlin, New York, Rome
3      Rome

和来自html表单的一些输入 - 数组。 这有效:

<?php
$cities=array("Rome", "New York", "Berlin"); // simulation of form input

foreach($cities as $value): // each city
  $result=mysql_query("SELECT * FROM `table` WHERE `destination` LIKE '%$value%'"); // find all match records for the city
  echo "<h3>For city \"$value\" I found in `table` these IDs</h3>";  
  while($value=mysql_fetch_array($result, MYSQL_NUM)): // fetch SELECT into rows
    echo "<pre>";
    print_r($value[0]); // prints IDs from DB corresponding with city in heading
    echo "</pre>";
  endwhile;  
endforeach;
?> 

答案 2 :(得分:0)

好的伙计们!这是我最后做的。谢谢你的帮助

$query = "select * from table ";

$query .= "WHERE
            example1 like '$example1' 
            AND example2 like '%$example2%' AND (";
foreach($array as $Filtervalues)
{
  $query .= " example3 like '%".$Filtervalues."%' OR";

}   

$query = trim($query, " OR"); 
$query .= ")";

$query .= " ORDER BY
            name
            "; 
echo $query;