【问题标题】:Deleteing record from table in mySQL database with PDO [closed]使用 PDO 从 mySQL 数据库中的表中删除记录
【发布时间】:2016-01-31 02:01:22
【问题描述】:

我一直在尝试从我的数据库中删除一行,但它一直显示我已删除而没有删除任何内容,请有人知道我的代码有什么问题

我尝试过使用 PDO 和 mysql 但没有删除但会显示已删除 我不知道该怎么办了。

MYSQL

    if($user == $me){
        $sql_delete = "DELETE FROM replys WHERE id = '$id' AND rusername = '$me'";
        echo $sql_delete;
        mysql_query($sql_delete) or die(mysql_error());
        echo "Deleted";
    }
    else{
    }
}
?>

PDO

<?php
session_start();  
if(isset($_POST['DeleteThis'])){

    $db_host = "localhost";
    $db_user = "root";
    $db_pass = "kindom";
    $db_name = "posters";

    try {
        $user = $_SESSION['username'];
        $form = $_POST;
        $id = $form['id']);
        $me = $form['me'];
        if($me == $user){
            $db_conn = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass);
            $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            $stmt = $db_conn->prepare("DELETE FROM replys WHERE id = :id AND rusername = :user");

//I have tried using this SQL statements  
//$query = "DELETE FROM replys WHERE id = {$id} AND rusername = {$user}"; 
//$query = "DELETE * FROM replys WHERE id = :id AND rusername = :rusername"; 
            $query = "DELETE FROM replys WHERE id = :id AND rusername = :rusername"; 

            $stmt->bindParam(':id', $id); 
            $stmt->bindParam(':rusername', $user);

            $stmt->execute();
            echo "Deleted";
        }
        else{
            //Do nothing
        }
    }
    catch(PDOException $e)
    {
        echo "Error:" . $e->getMessage();
    }
    $db_conn = null;
}
?> 

HTML

<a href="javascript:void(0);" onclick="document.getElementById('deleterp').submit();"><i style="font-size:17px;color:#F00;" class="fa fa-trash"></i></a>
<form id="deleterp" action="" method="POST">
<input type="hidden" name="id" value="<?php echo $rpId;?>"/>
<input type="hidden" name="DeleteThis" value="1"/>
<input type="hidden" name="me" value="<?php echo $rplyuser;?>"/>
</form></div> 

【问题讨论】:

  • 删除查询没有准备好?和弗雷德提到的声明。
  • 非常仔细地查看DELETE replys 并将其与手册所述dev.mysql.com/doc/en/delete.html 的内容进行比较,正如@MarkNg 所述,阅读手册php.net/pdo.prepared-statements
  • @MarkNg 如果它成功了。 ^ 见上文 ;-) 我们都编辑过。
  • 那么现在你确定现在的代码是正确的吗?你有没有运行它并测试是否有任何错误? @ Fred,在想,因为他设法回显“已删除”......嗯......声明说 rusername = :user 但 bindParam 是 ':rusername'......我建议你先阅读手册,链接正如@Fred-ii- 在上面发布的那样。我也很纳闷为什么没有抛出异常
  • @MarkNg About not throwing an exception for their issue类似于stackoverflow.com/q/35020308这个问题,里格斯和我最近都发布了一个答案。所以这里的情况可能非常相似。在深入了解手册之前,我的回答更像是一个有根据的猜测。

标签: php html mysql pdo


【解决方案1】:

PDO

改变

$stmt = $db_conn->prepare("DELETE FROM replys WHERE id = :id AND rusername = :rusername");

$stmt = $db_conn->prepare("DELETE FROM replys WHERE id = :id AND rusername = :user");

喜欢..

<?php
.
.
$stmt = $db_conn->prepare("DELETE FROM replys WHERE id = :id AND rusername = :rusername");
$stmt->bindParam(':id', $id); 
$stmt->bindParam(':rusername', $user);
.
.
?> 

改变

$id = $form['id']);

$id = $form['id'];

因为没有得到

解析错误:语法错误,意外的 ')' in /home/umu35534/public_html/questions.php 在第 70 行

【讨论】:

  • 我收到此错误Parse error: syntax error, unexpected ')' in /home/umu35534/public_html/questions.php on line 70
  • 哪一行是 70 @Codesoft ?
  • Change $id = $form['id']); to $id = $form['id']; 的好消息。
  • 我也不知道先生
  • 我也不知道先生... 但是,我们知道。检查我编辑的答案@Codesoft。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2012-05-15
  • 2023-04-01
  • 1970-01-01
  • 2023-02-06
  • 2012-05-16
  • 2011-07-12
相关资源
最近更新 更多