PDO Mysql,想要更新甚至插入数据
PDO Mysql, want to UPDATE even INSERT the data
我在这里遇到一些问题,我想更新 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();
}
绑定 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));
注意不要将 header("Location: index.php");
和 index.php 放在同一个文件中,因为那样会循环,你会得到如下错误:
your webhost redirected you too many times
我在这里遇到一些问题,我想更新 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();
}
绑定 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));
注意不要将 header("Location: index.php");
和 index.php 放在同一个文件中,因为那样会循环,你会得到如下错误:
your webhost redirected you too many times