在mysql中我想显示匹配的信息与值 ...但是我使用的代码分别选择信息并得到一个糟糕的结果。我想要的是将
这是我使用的代码:
$name = explode(',',$name); //splits search
$query = "SELECT * FROM lucky WHERE name LIKE '%" . implode("%' AND name LIKE '%", $name) . "%'";
$sname = explode(',',$sname); //splits search
$query = "SELECT * FROM lucky WHERE sname LIKE '%" . implode("%' AND sname LIKE '%", $sname) . "%'";
$result = $mysqli->query($query);
while($row = $result->fetch_assoc()) {
echo "<table id='box'>";
echo "<tr;>";
echo "<td id='text''>Name:</td><td id='haha'>" . $row['name']. "</td>";
echo "<td id='text'>Second Name:</td><td id='haha'>" . $row['sname'] . "</td>";
echo "</tr;>";
echo "</table>";
} else { echo "No mathed information" ; }
提前致谢:)
UPADATE
感谢斯宾塞的帮助!
这是我现在使用的代码。请用它来从数据库中选择匹配的信息!
$query = SELECT *
FROM lucky
WHERE name LIKE '$name'
AND sname LIKE '$sname'
$result = $mysqli->query($query);
while($row = $result->fetch_assoc()) {
echo "<table id='box'>";
echo "<tr;>";
echo "<td id='text''>Name:</td><td id='haha'>" . $row['name']. "</td>";
echo "<td id='text'>Second Name:</td><td id='haha'>" . $row['sname'] . "</td>";
echo "</tr;>";
echo "</table>";
} else { echo "No mathed information" ; }
答案 0 :(得分:1)
如果您的$sname
字符串包含值“jack,jill
”,那么查询将只返回name
列值包含两者的行这些字符串,例如:'jack and jill'
和'jillojellojacko'
匹配。但是查询将不返回name
列包含'jack'
但不包含'jill
'的行。
如果您的目的是搜索 匹配值的行,例如
$name = 'fee,fi,fo'
$sname = 'fum'
也就是说,name
列包含'fee'
,'fi'
,'fo'
或sname
列的所有行都包含'fum'
,您可以使用以下形式的查询:
SELECT t.*
FROM lucky t
WHERE t.name LIKE '%fee%'
OR t.name LIKE '%fi%'
OR t.name LIKE '%fo%'
OR t.sname LIKE '%fum%'
如果用OR
替换所有AND
s,那么一行将需要满足所有要返回的谓词。如果您想要AND
和OR
的组合,请使用parens来指定优先顺序......