Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO Mysql,想更新甚至插入数据吗_Php_Mysql_Pdo_Crud - Fatal编程技术网

Php PDO Mysql,想更新甚至插入数据吗

Php PDO Mysql,想更新甚至插入数据吗,php,mysql,pdo,crud,Php,Mysql,Pdo,Crud,我这里有一个问题,我想更新CRUD中的数据,数据甚至添加新的(比如insert) 你有办法解决吗?谢谢 这是我的密码 if ($valid) { $pdo = Database::connect(); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "UPDATE customers SET name = ?, email =

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

你有办法解决吗?谢谢

这是我的密码

    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();
  }

在准备好的语句中也使用绑定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为空的情况添加了插入查询
基于对已准备语句中绑定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为空的情况添加了插入查询
根据对注释的理解

绑定变量的数量与令牌的数量不匹配

$sql = "UPDATE customers
      SET name = ?, email = ?, address = ?
      WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($name,$email,$address));
你有四个代币吗?从开始,应该有四个参数:

$q->execute(array($name,$email,$address,$id));
注意不要放
标题(“Location:index.php”)
与index.php位于同一个文件中,因为这样会循环,并且会出现如下错误:

您的Web主机重定向您的次数太多


绑定变量的数量与令牌的数量不匹配

$sql = "UPDATE customers
      SET name = ?, email = ?, address = ?
      WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($name,$email,$address));
你有四个代币吗?从开始,应该有四个参数:

$q->execute(array($name,$email,$address,$id));
注意不要放
标题(“Location:index.php”)
与index.php位于同一个文件中,因为这样会循环,并且会出现如下错误:

您的Web主机重定向您的次数太多



第四个参数绑定在哪里?查询中有4个问号,执行时数组中只有3个元素完成了“new PDO”(“statement”还没有?或者您确定数据库::connect();因为我以前从未见过这种语法,它的“id”也应该在元素中?是的,我已经做过,但在不同的文件中,每个
都需要一个相应的绑定。这样是1:1。四个
表示数组中的四个参数。第四个参数绑定在哪里?查询中有4个问号,我只绑定了3个元素n执行数组时执行“new PDO”(“语句”是否已执行?或者是否确定数据库::connect();因为我以前从未见过这种语法,它的“id”也应该在元素中?是的,我已经做过,但在不同的文件中,每个
都需要一个相应的绑定。这样是1:1。四个
表示数组中有四个参数。如果其他所有参数都不变,有时最好只包含有问题的行。有错误吗消息?执行了错误的查询?您应该提供比“不工作”更多的反馈,而不是必须解决的问题。这是工作,但我的意思是,“更新”不更新,甚至添加新数据(如插入CRUD)我很难理解这句话。你的意思是更新查询现在正在工作,但你还需要将数据作为新记录插入吗?我已经更改了数据并提交了它,但在index.php中,新数据并不能替换旧数据。如果其他所有内容都没有更改,最好只包含有问题的行。有错误消息吗?错误消息是否执行了?你应该给出比“不工作”更多的反馈,而不是必须解决的问题。这是工作,但我的意思是,“更新”不能更新,甚至不能添加新数据(如插入CRUD)我很难理解这句话。你的意思是更新查询现在正在工作,但是你还需要将数据作为新记录插入吗?我已经更改了数据并提交了它,但是在index.php中,新数据不能替换旧数据