我已经用我想到的代码更新了这个问题以接受用户输入。基本上我正在尝试确保此代码不受SQL注入的影响,因为它确实有用户输入。
<?php
$username = "XXXX";
$password = "XXXX";
?>
<font size="+3" face="Verdana">XXXX</font>
<br><br>
<form name="form" action="XXX.PHP" method="get">
<input type="text" name="q" size="60" />
<input type="submit" name="Submit" value="Search">
</form>
<table>
<?
$var = $_GET['q'];
try {
$conn = new PDO('mysql:host=localhost;dbname=XXXX', $username, $password);
$stmt = $conn->prepare("SELECT * FROM XXXX WHERE XXXX LIKE '%$var%' OR XXXX LIKE '%$var%' OR XXXX LIKE '%$var%'");
$stmt->execute(array());
$result = $stmt->fetchAll();
if ( count($result) ) {
foreach($result as $row) {
echo "<tr>";
echo "<td>" .$row['XXXX']. "</td>";
echo "<td>" .$row['XXXX']. "</td>";
echo "<td>" .$row['XXXX']. "</td>";
echo "</tr>";
}
}
else {
echo "No results found.";
}
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
?>
</table>
答案 0 :(得分:4)
如果您没有正确处理恶意用户提供的数据,您只会冒SQL注入的风险。
由于您的查询中没有任何用户提供的数据,因此您不必担心SQL注入方面的任何内容。
当您将任何用户提供的值用于SQL查询时,您将接触到SQL注入。因此,您必须小心并适当地处理用户提供的数据。 您可以将搜索框中的字符串用于数据库查询,对吗?
然后你需要处理字符串以避免任何SQL注入
建议 pst ,建议使用PDO继续。
以下是一些关于该主题的好文章:
已弃用。来自php documentation:
此扩展程序自
PHP 5.5.0
起已弃用,将被删除 未来。相反,应使用MySQLi
或PDO_MySQL
扩展名。 有关更多信息,另请参阅MySQL: choosing an API guide and related FAQ
信息。该功能的替代方案包括:
- mysqli_real_escape_string()
- PDO::quote()