为了账号安全,请及时绑定邮箱和手机立即绑定

无法在 php poo 中插入数据

无法在 php poo 中插入数据

PHP
月关宝盒 2022-10-14 16:14:58
我一直在关注关于 oop php 的教程,我正在做 C 的 crud,我有一个用户及其属性。当我插入 bd 时,它只是保存 () 或 {()},在示例中,此人使用 `public function save(){   $sql = "INSERT INTO usuarios (nombre, apellidos, email, password,rol,) VALUES('{$this->getNombre()}',   '{$this->getApellidos()}','{ $this->getEmail()}','{$this->getPassword()}','user')";   $save = $this->db->query($sql);   $result=false;   if($save){        $result=true;   }   return $result;}`但是当我使用它时,我只能在数据库上保存 {()}。我尝试从 getter 中删除 {},并将属性保存在新变量中并将其写入查询中,但我无法使其工作。 这是我的数据库我 得到的错误谢谢您的回答 :)
查看完整描述

1 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

为避免 sql 注入,您应该使用准备好的语句。这些带有 PDO 并且使用起来非常简单。看看下面的例子。


$sql = "

    INSERT INTO 

        usuarios 

        (nombre, apellidos, email, password,role) 

    VALUES

        (:nombre, :apellidos, :email, 'user')

";


$stmt = $this->db->prepare($sql);

$result = $stmt->execute([

    'nombre' => $this->getNombre(),

    'apellidos' => $this->getApellidos(),

    'email' => $this->getEmail()

]);


return $result;

此外,您可以通过 PDO 将 sql 查询的执行包装在 try/catch 块中。因此,如果发生任何异常,您可以捕获它并查看到底出了什么问题。


try {

    // execute your logic here

} catch (PDOException $e) {

    var_dump($e, $this->db->errorInfo());

}

希望这可以帮助。


除此之外,您的 SQL 语法出现错误。之后的最后一个逗号rol。此外,错误消息说,()密钥的条目uq_email已经存在。您可以使用上面显示的 try/catch 块捕获这种异常。


查看完整回答
反对 回复 2022-10-14
  • 1 回答
  • 0 关注
  • 87 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号