2013-09-11 44 views
2

bind results和fetch_assoc有什么区别?bind结果和fetch_assoc有什么区别

我知道为预先准备好的语句进行绑定对于安全来说非常有用...绑定结果的好处是什么?

绑定结果似乎真的比传统FETCH_ASSOC()复杂

(我最近刚开始改变做好准备我所有的MySQL语句。)

+0

如果绑定结果,则可以再次执行该查询。如果数据库已更改,则变量将更改,而不再使用bind_result。 –

回答

2

连接结果将最终使您的生活更轻松,让您预先定义了每次运行给定查询时查询中的数据都会发送到哪里。使用fetch_assoc,每次从数据库中获取某些内容时都必须查看数组。

+0

这是否意味着绑定结果可以在缓存中保存更多信息?我是否需要执行更多的数据垃圾清除? –

+0

每次都会使用相同的变量。事实上,准备好的语句/绑定结果的好处是安全性/稳定性。 – TeejMonster

1

我已经从收集:Performance or security differences between mysqli get_result and bind_result?

有从数据库返回一个字符串没有安全风险(可根据您正在返回怎样才是正确的验证)

get_result()可以更容易地返回从语句预先创建的数组。

bind_result()可以轻松处理您希望使用的值。一些程序员喜欢将关联数组的每个元素都分配给一个常规变量,这样他们就可以不使用它们。使用bind_result会自动为您执行此操作,并且您不必每次都通过提取循环重复执行此操作。

它基本上只是一种文体选择。 bind_result的主要问题是您必须确保将参数的顺序与选择列表保持同步。对于bind_param也是如此(这就是为什么PDO允许:名称参数来解决这个问题),但好处大于此。

从本质上讲,这完全取决于开发人员喜欢使用什么。变量或寻求一个数组。它们都执行相同的任务,只是使用bind_result将取出一行代码来获取数组类型。