我是新手,所以如果我没有正确的短语,请耐心等待。 ; - )
我试图查询数据库。我有一个字符串,可以有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
答案 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;