Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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
Javascript 正在尝试删除表中的条目。查询不';t删除行,不知道如何调试_Javascript_Php_Mysql_Pdo - Fatal编程技术网

Javascript 正在尝试删除表中的条目。查询不';t删除行,不知道如何调试

Javascript 正在尝试删除表中的条目。查询不';t删除行,不知道如何调试,javascript,php,mysql,pdo,Javascript,Php,Mysql,Pdo,我正在尝试使用下面的代码删除数据库中的一个条目。javascript函数使用正确的“adventureID”将我带到index.php?delpost=,但当我检查数据库时,该行仍然存在。我最近开始使用PDO,所以我想知道execute()语句是否是问题所在$dbh连接到页面顶部的数据库,它在打印我试图从中删除行的表中的每一行时工作。我的目标是在调用javascript函数时成功删除一行。问题是——事实并非如此 <script language="JavaScript" type="tex

我正在尝试使用下面的代码删除数据库中的一个条目。javascript函数使用正确的“adventureID”将我带到
index.php?delpost=
,但当我检查数据库时,该行仍然存在。我最近开始使用PDO,所以我想知道
execute()
语句是否是问题所在$dbh连接到页面顶部的数据库,它在打印我试图从中删除行的表中的每一行时工作。我的目标是在调用javascript函数时成功删除一行。问题是——事实并非如此

<script language="JavaScript" type="text/javascript">
    function delpost(adventureID, title)
    {
        if (confirm("Are you sure you want to delete '" + title + "'" + " '" + adventureID + "'"))
        {
            window.location.href = 'index.php?delpost=' + adventureID;
        }
    }
</script>


<?php
    if(isset($_GET['delpost'])){
        $stmt = $dbh->prepare("DELETE FROM adventure WHERE adventureID = :adventureID");
        $stmt->execute(array(':adventureID' => $_GET['delpost']));
        header('Location: index.php?action=deleted');
        exit;
    }
?>


<?php
if(isset($_GET['action'])){
    echo '<h3>Post '.$_GET['action'].'.</h3>';
}

try {
    foreach($dbh->query("SELECT adventureID, title, postDate FROM adventure ORDER BY adventureID DESC") as $row) {
        echo '<tr>';
        echo '<td>'.$row['title'].'</td>';
        echo '<td>'.date('jS M Y', strtotime($row['postDate'])).'</td>';
        ?>

        <td>
            <a href="javascript:delpost('<?php echo $row['adventureID'] ?>','<?php echo $row['title'] ?>')">Delete</a>
        </td>

        <?php
        echo '</tr>';

    }

} catch(PDOException $e) {
    echo $e->getMessage();
}
?>

函数delpost(冒险家ID,标题)
{
如果(确认(“是否确实要删除“+”标题+“+”“+”“+”冒险家ID+”))
{
window.location.href='index.php?delpost='+冒险家ID;
}
}

您可能正面临启用MYSQL安全更新的问题。为了避免这种情况并最终删除行,您可以采用以下策略:

SET SQL_SAFE_UPDATES = 0;

--- YOUR DELETE STATEMENT ---

SET SQL_SAFE_UPDATES = 1;
要检查是否启用了
SQL\u SAFE\u更新
,可以通过运行:

SHOW VARIABLES LIKE 'sql_safe_updates'

尝试替换此代码:

$stmt = $dbh->prepare("DELETE FROM adventure WHERE adventureID = :adventureID");
$stmt->execute(array(':adventureID' => $_GET['delpost']));
通过以下方式:

$stmt = $dbh->prepare("DELETE FROM adventure WHERE adventureID = :adventureID"); 
$stmt->bindParam('adventureID', $_GET['delpost']);
$stmt->execute();
说明:

  • 您可以:在查询中使用“:variable”,然后通过使用“bindParam”函数绑定变量来传递变量
  • 或者:在查询中使用“?”,然后在“execute”函数中传递变量

这里可以找到完整的示例:

当您运行命令时,mysql会说什么?如果我在phpMyAdmin中运行命令,它会删除该行,它会返回到php中什么?移动
If(isset($\u GET['delpost'])之前尝试{
好吧,只需注释掉重定向…您有没有收到任何错误?请尽量更明确。我没有收到任何错误。它只是不起作用。我不知道如何将错误(如果出现)打印到屏幕上。您有任何日志文件?服务器日志文件?您有“打开”中的“显示错误”吗?我不知道。基本上没有。设置ini(在PHP文件顶部显示“显示错误”、“打开”),然后重试。