到目前为止,我只使用准备好的语句进行SQL插入,但我想知道我是否必须对所有SQL查询使用准备好的语句?如果是这样,我如何在下面的 SELECT 语句中使用它们?
// sql for category
$sql_category = "SELECT id as id_category, name as name_category
FROM category";
$results = mysqli_query($conn, $sql_category);
if ($results === false) {
echo mysqli_error($conn);
} else {
$categories = mysqli_fetch_all($results, MYSQLI_ASSOC);
}
我很高兴得到正确的回答,如果您有任何建议或问题,请告诉我。
此代码目前可以正常工作。
防止 SQL 注入是预准备语句的一个额外功能,否则,它们只是“预准备语句”...准备一次,使用不同的参数值执行多次。
话虽这么说,您可以在整个代码库中使用准备好的语句以保持一致性,即使查询不接受任何参数。你必须:
mysqli::prepare
创建一个 mysqli_stmt
对象mysqli_stmt::bind_param
指定参数值(如果有)mysqli_stmt::execute
执行语句mysqli_stmt::get_result
得到结果