我的搜索结果不一致?为什么是这样?

时间:2011-10-25 11:53:47

标签: php mysql html

我正在练习php mysql搜索结果。我得到的唯一问题是返回结果时搜索不一致。

请访问:

weezy.co.uk/newresults.php

在顶部的第一个搜索框中输入“受训者”。 有时结果显示有时他们没有。我不明白吗?

我的HTML搜索框代码是:

<form action="newresults.php" method="post" name="form">
<input type="text" id="search" name="search" 
size="30" value="" style="background-    color:white; border: 
solid 1px #ffffff; height: 30px; font-size:19px; font-family: 
HelveticaNeue-Light; font-weight: 1;
vertical-align:9px;color:#151515" 
onfocus="if(this.value == ''){this.value = 
'';this.style.color='#363D42'}" />
</div>
</div>
<div class="search">
<div class="search1">
<input type="text" 
id="searchterm" name="searchterm"  size="25" value="" style="background- 
color:white;  border: 
solid 1px #ffffff; height: 30px; font-size:19px; font-family: 
HelveticaNeue-Light; font-            weight: 1;
vertical-align:9px;color:#151515" 
onfocus="if(this.value == ''){this.value = 
'';this.style.color='#363D42'}" />
</form>

php代码:

<?php

$conn = mysql_connect("", "", "");

if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}

{

$search = "%" . $_POST["search"] . "%";
$searchterm = "%" . $_POST["searchterm"] . "%";

}

if (!mysql_select_db("weezycouk_641290_db1")) {
echo "Unable to select mydbname: " . mysql_error();
exit;
}

$sql = "SELECT name,lastname,email 
    FROM   test_mysql
    WHERE  name LIKE '$search%' AND lastname LIKE '$searchterm%'";

$result = mysql_query($sql);

if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}

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>';
echo '<br>';
echo '<div class="data1">';
echo $row["name"];
echo '</div>';
echo '<br>';
echo '<div class="data2">';
echo $row["lastname"];
echo '</div>';
echo '<br>';
echo '<div class="data3">';
echo $row["email"];
echo '</div>';
}

mysql_free_result($result);

?>

谢谢你们!

詹姆斯

4 个答案:

答案 0 :(得分:7)

当您的网页加载了结果时,您还会加载一个“标签”侧边栏,其中包含“希望招聘人员找到您?”的问题。该侧栏中的输入框用“输入名称”和“输入所选行业”填写。这两个输入上的“名称”属性是“搜索”,因此您要发布名为“搜索”的多个字段。

只需更改侧边栏中输入的名称即可修复此错误。你也一定要对输入进行消毒(正如其他人所指出的那样)。

答案 1 :(得分:1)

我不确定它是否能解决您的问题,但您应该以这种方式构建SQL查询:

$sql = '
   SELECT name,
      lastname,
      email, 
   FROM test_mysql
   WHERE name LIKE %' . mysql_real_escape_string($_POST['search']) . '%
      AND lastname LIKE %' . mysql_real_escape_string($_POST['searchterm']) . '%
';

如果您希望阻止显示所有行,以防用户无法填写输入值,请使用以下内容:

function makeWhereLike($column, $inputValue)
{
   $wherePart = '';
   if ($inputValue) {
      $wherePart = $column . ' LIKE %' . mysql_real_escape_string($inputValue) . '% ';
   } else {
      $wherePart = $column . ' IS NULL ';
   }
   return $wherePart;
}

$sql = '
   SELECT name,
      lastname,
      email, 
   FROM test_mysql
   WHERE ' . makeWhereLike('name', $_POST['search']) . '
      AND ' . makeWhereLike('lastname', $_POST['searchterm']) . '
';

答案 2 :(得分:0)

我很确定你提交这个表单的JS代码部分有些恶意。我建议你尝试通过在那里添加一个传统的提交按钮来提交它,看看会发生什么。

每隔一次你的查询回应“没有找到任何行,没有什么可以打印,所以我要退出”,虽然它在结果中不可见,因为它是在#ffffff中打印的。

答案 3 :(得分:0)

试试这个

$sql = "SELECT name,lastname,email 
FROM   test_mysql
WHERE  name LIKE '%".$search."%' AND lastname LIKE '%".$searchterm."%'";