好的,这是我的搜索HTML表单:
<form name="search" action="" method="get">
Search for: <input type="text" name="find" /> in
<select name="field">
<option value="author">Author</option>
<option value="papername">Paper name</option>
<option value="coauthors">Co-authors</option>
<option value="abstract">Abstract</option>
<option value="keywords">Keywords</option>
</select>
<input type=submit name=search value="search" />
</form>
这是我用于获取结果的PHP脚本(前几个条件,休息是无关紧要的,主要是带有变量的c / p):
if($_GET['search'] == "search"){
$loop = "";
$search = !empty($_GET['find']) && ($_GET['find'] != "")?trim($_GET['find']):false;
$field = !empty($_GET['field'])?trim($_GET['field']):false;
if ($search == ""){
echo "Please enter search conditions !";
}
elseif ($search) {
echo "<u>Searched term</u>:"." ".$search."<br />"."<u>In</u>:"." ".$field."<br/>";
if(($field == "Author") || ($search != "")) {
$author_query = mysql_query("SELECT p_authors FROM papers WHERE p_authors LIKE '%$search%'");
$author_output = mysql_num_rows($author_query);
if($author_output > 0){
while ($loop = mysql_fetch_assoc($author_query)) {
print_r($loop);
}
}
else {
echo "No match !";
}
}
elseif(($field == "papername") || ($search != "")){
$author_query = mysql_query("SELECT p_name FROM papers WHERE p_name LIKE '%$search%'");
$author_output = mysql_num_rows($author_query);
if($author_output > 0){
while ($loop = mysql_fetch_assoc($author_query)) {
print_r($loop);
}
}
else {
echo "No match !";
}
}
etc ...
事情是,我只选择选项值(作者)时获得输出结果(在搜索字段中有一些关键字),但是当我更改选项值(如papername和其他)时,我得到回显错误。看起来只有第一个条件(使用$ field ==&#34;作者&#34;)正在通过,我无法弄清楚这里有什么问题? THX
答案 0 :(得分:0)
使用您提供的信息严格回答您的问题:如果您属于else
条款,则显然意味着您的if
条款并非如此实现。在您的情况下,$author_output <= 0
,导致我们相信 1)您的查询没有返回结果,因此您必须检查您的表内容,SELECT参数等或 2)< / strong>您的查询返回错误,并且您没有按照自己的意愿处理它。
如评论中所述,请避免使用mysql_
已弃用的功能,并考虑使用mysqli_
个或构建PDO
个对象。
答案 1 :(得分:0)
在你的if语句中使用OR(||($ search!=&#34;&#34;))条件总是为真,因为它不是null所以它每次执行而其他elseif块从不执行尝试替换使用AND(&amp;&amp;)条件如下
if(($field == "Author") && ($search != "")) {
$author_query = mysql_query("SELECT p_authors FROM papers WHERE p_authors LIKE '%$search%'");
$author_output = mysql_num_rows($author_query);
if($author_output > 0){
while ($loop = mysql_fetch_assoc($author_query)) {
print_r($loop);
}
}
else {
echo "No match !";
}
}