需要 Zend_db 更新帮助

发布于 2024-11-05 15:29:25 字数 622 浏览 3 评论 0原文

目前我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吐个泡泡 2024-11-12 15:29:25

您的方法仅适用于整数值,因为连接 where 字符串的方式不会转义该值。因此,如果您这样做,

'email = '.$email

如果您使用字符串“hello world”,它将产生这样的 sql 字符串。

WHERE email = hello world

这是一个无效的 SQL 语句,因此不会发生更新。您想要生成的是这样的 where 子句

WHERE email = 'hello world'

有多种方法可以执行此操作,但通过 Zend Framework 执行此操作的最安全方法在 参考手册“示例 #24 使用数组数组更新行”

$data = array(
  'password' => $password
);
$where['email = ?'] = $email;
$this->update($data, $where);

You approach only works with integer values, because the way you concat the where string does not escape the value. So if you do

'email = '.$email

It will product an sql string like this if you use the string "hello world"

WHERE email = 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

WHERE email = 'hello world'

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".

$data = array(
  'password' => $password
);
$where['email = ?'] = $email;
$this->update($data, $where);
花开柳相依 2024-11-12 15:29:25

这段代码可能对您有帮助:

 public function updateDetails($data, $emailId) 
 {
    $where = array('email = ?' => $emailId);
    $this->update($data, $where);
 }

如果您仍然遇到问题,请告诉我......?

This code might help you :

 public function updateDetails($data, $emailId) 
 {
    $where = array('email = ?' => $emailId);
    $this->update($data, $where);
 }

Please let me know if you still face the problem.....?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文