【发布时间】:2011-10-25 22:25:07
【问题描述】:
我希望我的搜索仅显示与同一行中的值匹配的结果。
我有两个搜索字段:
“搜索”和“搜索词”
我的数据库中的字段名称是
名称 姓 电子邮件
例如:
如果我搜索
“搜索”中的“mike”和“搜索词”中的“smith”我想要显示的唯一结果是与“mike smith”匹配的结果,而不是显示像“mike harris”这样的结果
这是如何实现的?
谢谢!
詹姆斯
<?php
$conn = mysql_connect("", "", "");
if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}
$search = addcslashes($search,'%_');
$searchterm = addcslashes($searchterm,'%_');
$search = "%" . $_POST["search"] . "%";
$searchterm = "%" . $_POST["searchterm"] . "%";
if (!mysql_select_db("")) {
echo "Unable to select mydbname: " . mysql_error();
exit;
}
$search = $_POST['search'];
$searchterm = $_POST['searchterm'];
$sql = "SELECT name,lastname,email
FROM test_mysql
WHERE name LIKE '%". mysql_real_escape_string($search) ."%'";
$result = mysql_query($sql);
if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}
if(empty($_GET['search'])){ // or whatever your field's name is
echo 'no results';
}else{
performSearch(); // do what you're doing right now
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
while ($row = mysql_fetch_assoc($result)) {
echo '<br><br><div class="data1">';
echo htmlentities($row["name"]);
echo '</div><br><div class="data2">';
echo htmlentities($row["lastname"]);
echo '</div><br><div class="data3">';
echo htmlentities($row["email"]);
echo '</div>';
}
mysql_free_result($result);
?>
【问题讨论】:
-
这个问题读起来很有趣,因为您的示例对 $searchterm 没有任何作用。我假设您已经尝试了一个简单的 AND 语句? "WHERE name LIKE '%".$search."%' AND name LIKE '%".$searchterm."%'" - 这两个词都是必需的。
-
对不起,我对 mysql 很陌生,我昨天才开始。我如何适应 mysql_real_escape_string($search) ?我正在学习语法,不确定如何布局您刚才所说的内容?