PHP&MySQL搜索不起作用


PHP&MySQL search does not work?

可能的重复项:
PHP,MySQL验证故障和搜索不起作用?

我创建了一个表单,除了搜索之外,一切都工作正常。例如,每当用户在搜索框中输入任何值时,它都会显示来自数据库的结果、员工的示例姓名等......请在下面查看我的编码...

<html>
<head>
<?php
//require_once('student_form.php');
if(isset($_POST['search'])){ 
$id=$_REQUEST['id']; 
$fname=$_POST['fname'];
    //connect  to the database 
include('connection.php');
//-query  the database table 
$sql=mysql_query("SELECT  * FROM members WHERE (FirstName LIKE '". $fname ."%' OR LastName LIKE '". $lname ."%'");
    //-run  the query against the mysql query function 
    $result=mysql_query($sql); 
    if($row=mysql_fetch_array($result)){ 
                $fname=$row['FirstName']; 
                $lname=$row['LastName']; 
                /*$email=$row['Email'];
                $age =$row['Age'];
                $gender=$row['Gender'];
                $course = $row['Course'];*/
    }
    //-display  the result of the array 
    else
    {
    <?php echo $rows['FirstName']; ?>
    <?php echo $rows['LastName']; ?>
    } 
} 
?>
</head>
<body>
<form action="search.php" method="post">
<table>
    <tr>
    <td><strong>search box</strong></td>
    <td><strong>:</strong></td>
    <td><input type="text" name="search" value=""size="30"/><input type="submit" name="s1" value="Search"/></td>
</table>
</form>
</body>
</html>
请注意

,使用旧的mysql_扩展已被弃用...请参阅mysql_query文档顶部的通知

不建议使用此扩展。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL:选择 API 指南和相关常见问题解答以获取更多信息。此功能的替代方法包括:

  • mysqli_query()
  • PDO::query()

但是为了让您看到问题是什么,请替换此行:

$sql=mysql_query("SELECT  * FROM members WHERE (FirstName LIKE '". $fname ."%' OR LastName LIKE '". $lname ."%'");
//-run  the query against the mysql query function 
$result=mysql_query($sql); 

有了这个:

$result=mysql_query("SELECT  * FROM members WHERE (FirstName LIKE '". $fname ."%' OR LastName LIKE '". $lname ."%'");
if (!$result) {
    die('Could not query:' . mysql_error());
}

您只需要执行一次mysql_query,现在这将输出查询错误...因为mysql_query如果查询失败,则返回boolean false...在此处查看文档

请花一些时间阅读SQL注入

请注意,此答案将解决您的问题 - 但仅修复它对您将来没有帮助....

你必须完全重写你的代码。

首先,在从查询中FirstName之前删除括号:

"SELECT  * FROM members WHERE FirstName LIKE '". $fname ."%' OR LastName LIKE '". $lname ."%'"

现在,请注意这一点:如果$sql是函数mysql_query,则$result正在运行查询(mysql_query(mysql_query("...")))。

请改用 $result = mysql_query("...") 并删除变量 $sql

这里的第三个问题是你的PHP代码中有一个<?php标签。删除<?php并在else{ }?>标签。

我不明白$rows是什么,现在有声明。

您必须删除FirstName附近的括号,

$sql=mysql_query("SELECT  * FROM members WHERE FirstName LIKE '". $fname ."%' OR LastName LIKE '". $lname ."%'");