我正在尝试编写一个搜索功能,其中列出了符合搜索条件的产品。
termekek = products
marka = manufacturer
tipus = type
如下图所示,它列出了我的MSI产品,但也不是Radeon。 它应该只列出产品,即MSi,但也是Radeon。在我看来,问题必须与我的SQL代码有关,但我似乎无法做到正确。 先感谢您!
我的PHP代码:
<?php
if(isset($_GET["text_search"]))
{
require('db.php');
mysql_select_db('ceg',$connection);
$text=$_GET["text_search"];
$text=explode(" ", $text);
$i=1;
if(count($text) > 0)
$sql='SELECT * FROM termekek WHERE marka="'.$text[0].'" OR tipus="'.$text[0].'" ';
while($i < count($text)){
$sql .= 'AND marka="'.$text[$i].'" OR tipus="'.$text[$i].'"';
$i++;
}
echo $sql;
$result=mysql_query($sql);
if (mysql_num_rows($result) > 0)
{
while($array=mysql_fetch_array($result)){
echo '<div id="product">
<div>
<img height="250" width="250" src='.$array["kep"].' />
</div>
<div>
'.$array["marka"].'
'.$array["tipus"].'
</div>
<div>
'.$array["ar"].' euró
</div>
</div>';
}
}
}
?>
答案 0 :(得分:1)
你的OR子句需要括号,以便首先评估它们。
答案 1 :(得分:0)
根据罗伯特的说法,我认为你的代码应该是这样的。
if(count($text) > 0)
$sql='SELECT * FROM termekek WHERE (marka="'.$text[0].'" OR tipus="'.$text[0].'") ';
while($i < count($text)){
$sql .= 'AND (marka="'.$text[$i].'" OR tipus="'.$text[$i].'")';
$i++;
}