在过去的几天里,我看到了一些问题使用了mysqli
,但答案似乎没有意识到$stmt->execute()
和$db->query()
之间的区别。
据我所知,在mysqli
中有两种不同的访问结果的模型。
这个需要使用原生SQL,并要求程序员转义输入,以防止SQL注入攻击,但允许程序员检索包含列 => 值
映射的关联数组(或普通数组):
$result_set = $db->query("SAFE SQL QUERY HERE");
while ($row = $result_set->fetch_assoc()) {
# do something with $row[ fieldname ];
}
或者,您可以使用这种方法,它允许漂亮地绑定参数和结果,但是(据我所知)无法提供任何简单的数组结果:
$stmt = $db-prepare("SQL QUERY WITH ? PLACEHOLDERS");
$stmt->bind_param("s", $input_variable);
$stmt->execute();
$stmt->bind_results($output_col1, $output_col2);
while ($stmt->fetch()) {
# do something with $output_col1 and $output_col2
}
我的问题是 - 使用mysqli
是否有办法获取第一种模式中显示的简单数组输出,同时仍然使用安全绑定的输入参数,就像第二种模式一样?
我找不到任何其他方法来做这件事(除了使用 PDO
!)。