我想搜索并显示数据库中的数据,但它给了我错误

时间:2015-01-23 12:39:01

标签: php html5

这是我的search_candidate.php文件

<?php

   $name = $_GET['name'];
   $sql = "SELECT * FROM candidates WHERE Name = $name";
   $query = mysql_query( $sql );
          if(mysql_num_rows($query) == "")
          {
          echo "no result found";
          }
          echo "<table>";

          echo "<thead></thead>";
                while( $row = mysql_fetch_array( $query ) )
                     {
                      echo "<tr></tr>";
                     }
          echo "</table>";
?>

3 个答案:

答案 0 :(得分:4)

SELECT * FROM candidates WHERE Name = $name

$name是一个字符串,需要使用'$name'

之类的引号

但即使在那个修复之后你也不会得到任何东西,因为你的循环不打印任何数据。它只是打开并关闭没有任何内容的新行。

How can I prevent SQL injection in PHP?

答案 1 :(得分:2)

尝试使用此代码即可。

<?php

   $name = $_GET['name'];
   $sql = "SELECT * FROM candidates WHERE Name = '$name'";
   $query = mysql_query( $sql );
          if(mysql_num_rows($query) == "")
          {
          echo "no result found";
          }
          echo "<table>";

          echo "<thead></thead>";
                while( $row = mysql_fetch_array( $query ) )
                     {
                      echo "<tr><td>".$row['name']."</td></tr>";
                     }
          echo "</table>";
?>

从问题中复制代码并对2个错误进行更改$name字符串必须在引号中并在循环中添加<td>".$row['name']."</td>以显示内容。

您的代码允许任何人注入,因此请尝试使用PDOMySQLi连接。

答案 2 :(得分:1)

似乎名称是字符串,因此在查询

中向$name添加引号
$sql = "SELECT * FROM candidates WHERE Name = '$name'";

注意: - mysql_*已弃用mysqli_*PDO