php - PDO Mysql,想要更新甚至插入数据

标签 php mysql pdo crud

我这里有一个问题,我想更新CRUD中的数据,甚至添加新的数据(如插入)。

有办法解决吗?谢谢。

这是我的代码,

    if ($valid) {
      $pdo = Database::connect();
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $sql = "UPDATE customers
              SET name = ?, email = ?, address = ?
              WHERE id = ?";
      $q = $pdo->prepare($sql);
      $q->execute(array($name,$email,$address));
      Database::disconnect();
      header("Location: index.php");
    }
  }else {
    $pdo = Database::connect();
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "SELECT * FROM customers WHERE id = ?";
    $q = $pdo->prepare($sql);
    $q->execute(array($id));
    $data = $q->fetch(PDO::FETCH_ASSOC);
    $name = $data['name'];
    $email = $data['email'];
    $address = $data['address'];
    Database::disconnect();
  }

最佳答案

在准备好的语句中也绑定(bind) id

    if ($valid) {
      $pdo = Database::connect();
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $values = array($name,$email,$address);
      if($id) {
          $sql = "UPDATE customers
                  SET name = ?, email = ?, address = ?
                  WHERE id = ?";
          $values[] = $id;
       } else {
          $sql = "INSERT INTO customers (name, email, address)
                  VALUES (?,?,?)";
       }
       $q = $pdo->prepare($sql);
       $q->execute($values);
      Database::disconnect();
      header("Location: index.php");
    }
  }else {
    $pdo = Database::connect();
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "SELECT * FROM customers WHERE id = ?";
    $q = $pdo->prepare($sql);
    $q->execute(array($id));
    $data = $q->fetch(PDO::FETCH_ASSOC);
    $name = $data['name'];
    $email = $data['email'];
    $address = $data['address'];
    Database::disconnect();
  }

参见第 8 行(省略 **)

编辑 添加了 $id 为空的情况的插入查询 基于对评论的理解

关于php - PDO Mysql,想要更新甚至插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45002784/

相关文章:

php - PHP 和 JS 之间的数据通信

mysql - Easy DB Web 前端

php - PDO 连接不起作用

php - "Integrity constraint violation: 1062 Duplicate entry"- 但没有重复的行

php - 如何创建唯一 ID,例如 YouTube?

php - Laravel 使用碳获取当前季度

php - Google Chart API 实现显示空白页

mysql - 如何获取MySql中的总行数和最新行的值?

php - 错误的外键约束

php - 在同一个 PDO 查询中删除和选择