Php Zend_Db问题。。。更新增量导师

Php Zend_Db问题。。。更新增量导师,php,zend-framework,zend-db,Php,Zend Framework,Zend Db,这样行吗?(增加登录计数?) 还要使用引号,这样您就不会受到SQL注入的攻击: $n = $db->update('users', $data, $db->quoteInto('user_id = ?', $_userId)); 重新注释:是的,在update()方法的情况下,它假定您正在发送一个文本值,除非您使用Zend_Db_Expr类型的对象。您可以自己进行测试: $db->getProfiler()->setEnabled(true); $n = $db-&g

这样行吗?(增加登录计数?)

还要使用引号,这样您就不会受到SQL注入的攻击:

$n = $db->update('users', $data, $db->quoteInto('user_id = ?', $_userId));

重新注释:是的,在update()方法的情况下,它假定您正在发送一个文本值,除非您使用Zend_Db_Expr类型的对象。您可以自己进行测试:

$db->getProfiler()->setEnabled(true);
$n = $db->update('users', $data, $db->quoteInto('user_id = ?', $_userId));
$qp = $db->getProfiler()->getLastQueryProfile();
echo $qp->getQuery() . "\n";
您在
$data
数组中给出的任何文字值都是参数化的,因此查询结果如下所示:

UPDATE `users` SET `login` = ? WHERE user_id = 123
如果使用Zend_Db_Expr类的对象,它知道将字符串逐字插入查询,而不是参数化:

UPDATE `users` SET `login` = NOW() WHERE user_id = 123
请注意,当您插入这样的表达式时,您需要负责验证,这样您就不会出现安全漏洞。

对于“Now()”是否也会这样?
UPDATE `users` SET `login` = ? WHERE user_id = 123
UPDATE `users` SET `login` = NOW() WHERE user_id = 123