0

我从good ol'切换MySQLMySQLi(我知道大器晚成)并选择MySQLiPDO

首先,我喜欢关联数组(eg: $db_data['whatever_field']),所以我不能使用准备好的语句,因为它不会返回关联数组(默认情况下/没有变通方法)。

所以我必须自己手动准备我的MySQLi陈述,例如:

'SELECT * FROM admin_users WHERE email='. $mysqli->real_escape_string($_COOKIE['admin']['email']) .' AND password='. $mysqli->real_escape_string($_COOKIE['admin']['password']);

可以想象,这可能会让人厌烦!有没有短片$mysqli->real_escape_string()或者你们是做什么的?

4

3 回答 3

3

在我的监视下,您不会在 PDO 上使用 Mysqli!

首先,我喜欢关联数组(例如:$db_data['whatever_field']),所以我不能使用准备好的语句,因为它不返回关联数组(默认情况下/没有变通方法)。

这是一个糟糕的借口。

PDOStatement::fetch

接受可以设置为的获取样式作为第一个参数PDO::FETCH_ASSOC

还,

 PDO::setAttribute

使您能够选择默认提取样式,特别是设置PDO::ATTR_DEFAULT_FETCH_MODEPDO::FETCH_ASSOC.

参考:

于 2012-10-16T14:13:31.087 回答
1

如果您准备不需要转义的语句,那是准备语句的主要目的之一。

我支持 Jeffrey 关于为什么使用 PDO 的解释,并且我还想说明 mysqli 是一个奇怪的库,如果你必须要测试的话,真的很难测试。通过引用绑定变量的方式看起来并不容易。我个人建议你重新考虑你的选择。希望有一天我们会弃用 mysql 和 mysqli。

于 2012-10-16T14:19:09.773 回答
0

有一个函数名为fetch_assoc. 进一步阅读 php 手册http://php.net/manual/en/mysqli-result.fetch-assoc.php

mysqli_result::fetch_assoc -- mysqli_fetch_assoc -- 获取结果行作为关联数组

于 2012-10-16T14:08:35.180 回答