如何使用php删除和更新
大家好,我一直在尝试使用php删除一个文件,我希望它删除主帖子,回复,然后更新到作者-10在他/她的观点 以下是我使用PDO的代码:如何使用php删除和更新,php,pdo,Php,Pdo,大家好,我一直在尝试使用php删除一个文件,我希望它删除主帖子,回复,然后更新到作者-10在他/她的观点 以下是我使用PDO的代码: <?php session_start(); if(isset($_POST['id'])){ include($root . 'dbconn.php'); $form = $_POST; $id = $form['id']; try { $db_c
<?php session_start();
if(isset($_POST['id'])){
include($root . 'dbconn.php');
$form = $_POST;
$id = $form['id'];
try {
$db_conn = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USERNAME,DB_PASSWORD);
$db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db_conn->prepare("DELETE FROM code WHERE cid= {$id}");
$stmt = $db_conn->prepare("DELETE FROM comment WHERE id = {$id}");
$stmt = $db_conn->prepare("DELETE FROM likes_map WHERE lid = {$id}");
$stmt = $db_conn->prepare("UPDATE users SET point -1 WHERE username = {$u}");
$stmt->bindParam(':id', $id);
$stmt->bindParam(':cid', $id);
$stmt->bindParam(':lid ', $id);
$stmt->bindParam(':u ', $_SESSION['username']);
$stmt->execute();
echo "deleted"
} catch(PDOException $e) {
echo "Error:" . $e->getMessage();
}
$db_conn = null;
}else{
echo "You are not allow to delete this";
}
?>
第一个问题是,在同一个语句句柄上准备了多个查询,因此在准备下一个查询时失去了到该已准备语句的链接 您也只执行一次查询,而不是每个语句执行一次 另外,您准备的sql语句没有使用正确语法设置参数 在事务内部运行此代码也是一个好主意,因此,如果数据库的任何更新失败,您就不会只剩下完成此过程的一部分。这假设数据库是INNODB数据库,而不是MYISAM数据库,因为事务在MYISAM上不起作用
<?php
session_start();
if(!isset($_POST['id'])){
echo "You are not allow to delete this";
exit;
}
include($root . 'dbconn.php');
$form = $_POST;
$id = $form['id'];
try {
$db_conn = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USERNAME,DB_PASSWORD);
$db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// start a transaction
$db_conn->beginTransaction();
$d_code = $db_conn->prepare("DELETE FROM code WHERE cid= :id");
$d_code->bindParam(':id', $id);
$d_comment = $db_conn->prepare("DELETE FROM comment WHERE id = :id");
$d_comment->bindParam(':id', $id);
$d_like = $db_conn->prepare("DELETE FROM likes_map WHERE lid = :id");
$d_like->bindParam(':id ', $id);
$u_user = $db_conn->prepare("UPDATE users SET point -1 WHERE username = :u");
$u_user->bindParam(':u ', $_SESSION['username']);
$d_code->execute();
$d_comment->execute();
$d_like->execute();
$u_user->execute();
$db_conn->commit();
echo "deleted";
} catch(PDOException $e) {
$db_conn->rollBack();
echo "Error:" . $e->getMessage();
}
$db_conn = null;
?>
您的问题是?@RST不起作用。它将显示已删除,但不会有任何帮助