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


i want to search and display the data from database but it gives me error

这是我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>";
?>
SELECT * FROM candidates WHERE Name = $name

$name是一个字符串,需要用引号引起来,例如'$name'

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

如何防止 PHP 中的 SQL 注入?

试试这段代码,它会起作用。

<?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>以显示某些内容。

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

似乎名称是字符串,因此在查询中为$name添加引号

$sql = "SELECT * FROM candidates WHERE Name = '$name'";

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