我正在练习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);
?>
谢谢你们!
詹姆斯
答案 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."%'";