2

我有一个 php 脚本的问题。

我想从我的数据库中删除一条记录,所以我使用了该execute()方法,当我作为参数传递的代码没有记录时,它应该返回 false,但是尽管没有任何记录与该代码,它总是返回 true。

这是脚本:

<?php

include('connexion.php');

//Récuperation des valeurs 
$code = $_POST['code'];

if($code)
{
    //Suppression de l'enregistrment avec le code = $code à m'aide d'une requête préparée
    $req = $bdd->prepare('Delete from chambre where code_ch = ?');
    $rowDeleted = $req->execute(array($code));
    //Ou bien : mysql_query('Delete from chambre where code_ch = '.$code);

    $supprimer = ($rowDeleted == true) ? 'OK' : 'notfound';

}
else
{
    $supprimer = 'empty';
}

header('Location: supprimer.php?supprimer='.$supprimer.'&code='.$code);

?>
4

2 回答 2

2

PHP PDO 对象将(正确地)返回一个成功/真值以删除零行。解决此问题的一种方法是使用类似$pdo->rowCount()查看 PDO 影响的行数。如果您尝试删除行,则应考虑结果 0 from$pdo->rowCount()表示您没有成功删除您想要删除的行。

于 2012-12-22T11:51:11.320 回答
0

你可能很困惑。执行文档说:

Returns TRUE on success or FALSE on failure.

它没有说明行是否被删除。如果您想要删除的行数,您可能想要受影响的行。但是即使那样,依赖它也可能是一个坏主意。例如,如果两个删除同一行的调用同时发生怎么办?

您不应该关心 delete 实际上删除了一行,只是您尝试删除的行不再存在。

于 2012-12-22T12:02:37.863 回答