需要 Zend_db 更新帮助
目前我正在使用 Zend 框架,并且需要有关 Zend_Db_Table_Abstract 类中的 Zend_db 更新的帮助。
这是我的 SQL 语句
UPDATE user
SET password = '$password',
`enter code here` WHERE email = '$email'
这是我在 zend_db 中的代码
public function updatePassword($password,$email)
{
$data = array(
'password' => $password
);
$where = "email = '". $email ."'";
$this->update($data, 'email = '.$email);
}
只有当我使用 int id 作为 where 子句进行更新但我想使用电子邮件字符串作为 where 子句时,这才有效。
有人可以帮助我实现这一目标的最佳方法吗?
我想要安全并避免 SQL 注入攻击
提前非常感谢。
Currently I'm working with Zend framework and I need help with Zend_db update in Zend_Db_Table_Abstract class.
Here is my SQL statement
UPDATE user
SET password = '$password',
`enter code here` WHERE email = '$email'
Here is my code in zend_db
public function updatePassword($password,$email)
{
$data = array(
'password' => $password
);
$where = "email = '". $email ."'";
$this->update($data, 'email = '.$email);
}
This only work if I update using int id as my where clause but I wanted to use a email string as a where clause.
Can someone please help me the best way to achieve this?
I wanted to be secure and avoid SQL Injection attack
Thanks so much in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的方法仅适用于整数值,因为连接 where 字符串的方式不会转义该值。因此,如果您这样做,
如果您使用字符串“hello world”,它将产生这样的 sql 字符串。
这是一个无效的 SQL 语句,因此不会发生更新。您想要生成的是这样的 where 子句
有多种方法可以执行此操作,但通过 Zend Framework 执行此操作的最安全方法在 参考手册“示例 #24 使用数组数组更新行”。
You approach only works with integer values, because the way you concat the where string does not escape the value. So if you do
It will product an sql string like this if you use the string "hello world"
This is an invalid SQL statement so the update does not happen. What you want to produce is a where clause like this
There are multiple ways to do this, but the safest way to do that via Zend Framework is described in the reference manual under "Example #24 Updating Rows Using an Array of Arrays".
这段代码可能对您有帮助:
如果您仍然遇到问题,请告诉我......?
This code might help you :
Please let me know if you still face the problem.....?