2013-01-06 36 views
0

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

     } 
    } 

谢谢你们

+6

你对sql注入很开放 –

+5

'echo $ q;'你想要什么?在你的表单中没有“term”,也许你想要“name” – 2013-01-06 22:13:17

+1

John是正确的世界,你应该清理你的数据库输入。 Mysqli提供了准备好的语句来帮助这[http://php.net/manual/en/mysqli.quickstart.prepared-statements.php]http://php.net/manual/en/mysqli.quickstart.prepared-statements。 php – djthoms

回答

2

你的表单字段是name,不term,所以你的PHP应该是

$term = $_POST['name']; 

因为$term由于值不正确而为空,您的查询将返回所有结果。 (您的查询看起来像SELECT name, producer, jamtypes, user FROM Jam WHERE name LIKE '%&'

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

+0

谢谢!真的很简单,愚蠢的错误。我以前在我的表单中有过术语,但是拿出来重新做了php。应该有错误检查它,并且将来会做。再次欢呼。 – Bic1245