尝试更新空行时没有抛出mySQL错误

时间:2014-10-16 23:18:32

标签: php mysql pdo error-handling

建立一个小项目并尝试学习。

如果表名错误,我会得到错误代码,但如果我尝试更新空行,我就不会收到错误。我想,但它并没有告诉我,我搞砸了。这是正常的吗?

public function updateMessage($id){  //done
    try{
        global $pdo;
        $temp=$this->_message;
        $sql = "UPDATE message SET content=:val  WHERE id=$id";
        $s = $pdo->prepare($sql);
        $s->bindValue(':val',$temp);
        $s->execute();
    }
    catch (PDOException $e)
    { $loc = $_SERVER['PHP_SELF'];
    $output = "Unable to connect to the database server: $loc <br><h3>Please contact 
    Steve via text on ###### quoting:</h3><h5>" . $e->getMessage() .  "<br>
    Found at $loc.</h5>
    <h3>Thanks. </h3>". "<br>"."<br>" ;
    include $_SERVER['DOCUMENT_ROOT'] ."/beta01/includes/output.html.php";
    exit();
    }
}

正如我所说,它可以正常工作,大多数错误都不在空的更新问题上。

1 个答案:

答案 0 :(得分:0)

$sql = "UPDATE message SET content=:val  WHERE id=$id";

如果它是一个“空行”(假设我理解你正确),那么它不符合条件WHERE id=$id,所以它有效 - 它更新了具有该id的每一行的消息内容(那里没有)。

听起来您想知道查询是否没有行影响,在这种情况下您可以这样做:

$s->execute();
if ($s->rowCount() < 1) {
    //throw an exception, show a warning, whatever you want to do
}