PHP的MySQLi功能很棒。
准备好的语句非常适合在查询中注入参数。
但是,如果您使用语句,则您似乎无法再访问fetch_assoc功能。您必须手动绑定所有结果。这意味着我的SQL查询必须列出所有字段,然后我必须在获得结果时预先列出所有变量(使用bind_result)。这可能会变得非常烦人并浪费时间。
有替代方案吗?
由于
答案 0 :(得分:4)
是的,它被称为PDO,通常比MySQLi更受欢迎。它提供带有常规提取选项的语句,并不强制您显式绑定所有参数。典型的查询可能如下所示:
$stmt = $db->prepare("SELECT * FROM foo WHERE a = ?");
$stmt->execute(array($a));
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
PDO非常灵活,因此也可以以其他方式使用。手册中有很多很好的例子。看看吧!
答案 1 :(得分:1)
MySQLi确实提供了处理此问题的方法,看看result_metadata函数。
我写了一个类来允许无障碍参数化MySQLi查询 - 下载和基本用法信息可在此处获取:http://www.robpoyntz.com/blog/?p=191