根据如何Wiki:这是如何防止PHP中的sql注入。
我只是想问问是否真的有必要以if语句开头?
$name = $_GET['username'];
if ($stmt = $mysqli->prepare("SELECT password FROM tbl_users WHERE name=?")) {
// Bind a variable to the parameter as a string.
$stmt->bind_param("s", $name);
// Execute the statement.
$stmt->execute();
// Get the variables from the query.
$stmt->bind_result($pass);
// Fetch the data.
$stmt->fetch();
// Display the data.
printf("Password for user %s is %s\n", $name, $pass);
// Close the prepared statement.
$stmt->close();
}
答案 0 :(得分:1)
如果使用准备好的语句,无论是否将函数调用包装在if语句中,SQL注入都是不可能的。
根据documentation,如果在执行过程中发生错误,mysqli::prepare
返回false
。 if
语句可以检测到该错误,如果返回值为false
,则它不会尝试继续执行查询并使用其结果(因为这将失败或导致错误的结果)
顺便说一句,PDO是mysqli
系列的替代产品,并且不会出现在您的问题中(因此标题有点误导)。