我有一个发送到外部网站的用户表单,该网站的回复包含一个唯一的代码(例如" a87ju89y")。该代码对我很重要,因此,使用预处理语句将其输入到我的数据库中。
在后端我有一个cronjob每分钟运行一个php脚本,查询数据库以查看是否有这样的新代码:
$con = mysqli_connect($servername, $username, $password, $database);
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$results = mysqli_query($con, "SELECT user FROM stack ORDER BY ID");
$cronresults = mysqli_query($con, "SELECT run FROM kook ORDER BY ID");
$row = mysqli_fetch_assoc($results);
$cron = mysqli_fetch_assoc($cronresults);
$row2 = $row['user'];
$cron2 = $cron['kook'];
我的问题是,我是否需要一个准备好的语句来简单地提取信息并阻止某种SQL注入?如果我这样做,我会怎么做呢?
答案 0 :(得分:3)
您在这里不需要准备好的声明,因为您没有将任何数据传递到查询中。准备好的语句将查询分解为查询本身(带占位符)和要处理的数据。这样就不会混淆什么是数据和什么是查询。
选择表格中的所有行不需要数据。
答案 1 :(得分:1)
Prepared语句仅在需要将值插入查询时才有用。这通常是在您拥有包含要搜索的值的WHERE
子句时。在您的情况下,两个查询都没有任何移动部分,因此没有任何准备好的语句可以为您做。
在旁注中,您可以做一些事情来改进您的脚本:
LIMIT 1