【发布时间】:2015-04-11 09:17:10
【问题描述】:
如何使以下代码免受 sql 注入的影响。
PHP 代码
global $wpdb;
if($wpdb->insert(
'votes',
array(
'votes' => $votes,
'competition' => $competition,
'uid' => $uid
)
) == false) wp_die('Database Insertion failed'); else echo 'Database insertion successful<p />';
【问题讨论】:
-
使用codex提供的prepared statement api
-
好的,谢谢,对于所有类型的查询,如在 wordpress 中的插入、选择、更新和删除,准备好的语句都是必需的。因为我已经读过某个地方,我们可以不用它,以防插入查询。
-
@Ghost Bummer,
insert()实际上调用了prepare(),但是使用mysql(i)_real_escape_string()转义了值,WordPress 中没有真正准备好的语句。 -
@jeroen 是的,这些包装类中的大多数都模拟准备好的语句,并且并没有真正发送查询将绑定的变量和语句分开,但是是的,这就是他们所拥有的,不妨使用 PDO 并起飞准备好的仿真