猿问

无法在 php poo 中插入数据

我一直在关注关于 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 中删除 {},并将属性保存在新变量中并将其写入查询中,但我无法使其工作。 这是我的数据库


我 得到的错误


谢谢您的回答 :)


月关宝盒
浏览 88回答 1
1回答

四季花海

为避免 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 块捕获这种异常。
随时随地看视频慕课网APP
我要回答