-1

我想知道如何检查插入语句是否执行。

我目前的检查代码是这样的:

$query = $conn->prepare("INSERT INTO editlog VALUES('',:whoadd,:doing,NOW())");
$query-> execute(array(':whoadd'   => $whoadd,':doing'   => $doing));
if ($query->rowCount() > 0) {
// insert statement have been executed 
}
else 
{
// something went wrong
}

有没有比使用更好的方法$query->rowCount() > 0?我听说它rowCount()本身运行对 mysql 数据库的查询..那么,有什么好的选择?

4

3 回答 3

3

正如 Mark Parnell 建议的那样,将execute调用包装在if语句中就可以了。稍后设置数据库对象的一些属性可能也很有用:

 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

导致 PDOPDOException在查询失败时抛出异常 ( )。您可以通过将数组作为第四个参数传递给构造函数来设置这些属性:

$pdo = new PDO('mysql:dbname=foobar;host=127.0.0.1','your','pass',
                      array(PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ'));

例如,这里是可以指定的所有属性的完整列表

于 2013-03-12T23:56:38.740 回答
1

检查调用的返回值execute

if ($query->execute(array(':whoadd' => $whoadd,':doing' => $doing))) {
    // insert statment have been excuted 
}
else 
{
    // something went wrong
}
于 2013-03-12T23:10:05.903 回答
0

PDOStatement::execute() 本身将在成功时返回 true 或在失败时返回 false。

于 2013-03-12T23:11:38.373 回答