PHP搜索功能打印所有记录,而不是搜索的记录

时间:2013-01-06 22:11:43

标签: php sql search

我刚刚在PHP中创建了一个非常简单的搜索功能,但是我遇到了一些问题。搜索功能向数据库发送查询,并打印结果,但不打印我想要的结果。它应该打印那些类似于用户输入的记录,但它只打印每条记录。

我的表格如下:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
     <input  type="text" name="name"> 
     <input  type="submit" name="submit" value="Search"> 
</form>

使用它进行搜索的PHP代码是:

if(isset($_POST['submit'])) 
    { 
     require ('mysqli_connect.php');
     include ('config.php');

    $term = $_POST['term'];
        $q = "SELECT  name, producer, jamtypes, user FROM Jam WHERE name LIKE '%" . $term .  "%'";
        $sql = @mysqli_query ($dbc, $q);

     while ($row = mysqli_fetch_array($sql)){

        echo "<br />";
         echo 'Name: '.$row['name'];
         echo '<br/> Producer: '.$row['producer'];
         echo '<br/> Created By: '.$row['user'];
         echo '<br/> Category: '.$row['jamtypes'];
         echo '<br/>';

        }
  }

谢谢你们

1 个答案:

答案 0 :(得分:2)

您的表单字段为name,而不是term,因此您的PHP应为

$term = $_POST['name'];

由于$term由于值不正确而空白,因此查询会返回所有结果。 (您的查询类似于SELECT name, producer, jamtypes, user FROM Jam WHERE name LIKE '%&'

仅供参考,启用error_reporting并报告通知会告诉您这一点。始终使用错误报告并显示所有错误。