PHP和MySQL搜索不起作用?

时间:2012-07-02 13:35:05

标签: php mysql html

  

可能重复:
  PHP, MySQL validation malfunction and search doesn't work?

我创建了一个表单,除了搜索之外,每件事情都运行良好。例如,只要用户在搜索框中输入任何值,它就会显示数据库的结果,员工的示例名称等等...... 请看下面的编码......

<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>

3 个答案:

答案 0 :(得分:2)

请注意,旧的mysql_扩展名已被弃用...请参阅top of the mysql_query doc

上的通知
  

不鼓励使用此扩展程序。相反,应使用MySQLiPDO_MySQL扩展名。另请参阅MySQL:choosing an API guiderelated FAQ以获取更多信息。该功能的替代方案包括:

     
      
  • mysqli_query()
  •   
  • PDO ::查询()
  •   

但是为了让您了解问题所在,请替换此行:

$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 ... {{3 }}

请您花一些时间阅读see the docs here

注意 SQL Injection会解决您的问题 - 但只是修复它将来不会帮助您....

答案 1 :(得分:1)

您必须完全重写代码。

首先,从查询中删除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,现在有声明。

答案 2 :(得分:0)

您必须删除FirstName附近的括号

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