我是否必须对所有 SQL 查询使用准备好的语句?

问题描述 投票:0回答:1

到目前为止,我只使用准备好的语句进行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);
}

我很高兴得到正确的回答,如果您有任何建议或问题,请告诉我。

此代码目前可以正常工作。

php mysql insert prepared-statement
1个回答
1
投票

防止 SQL 注入是预准备语句的一个额外功能,否则,它们只是“预准备语句”...准备一次,使用不同的参数值执行多次。

话虽这么说,您可以在整个代码库中使用准备好的语句以保持一致性,即使查询不接受任何参数。你必须:

  • 使用
    mysqli::prepare
    创建一个
    mysqli_stmt
    对象
  • 使用
    mysqli_stmt::bind_param
    指定参数值(如果有)
  • 使用
    mysqli_stmt::execute
    执行语句
  • 使用
    mysqli_stmt::get_result
    得到结果
© www.soinside.com 2019 - 2024. All rights reserved.