这是我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
。