PDO插入if语句

时间:2013-03-12 23:06:55

标签: php pdo

我想知道如何检查是否执行了insert语句。

我目前的检查代码是:

$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数据库运行查询。所以,有什么好的选择?

3 个答案:

答案 0 :(得分:3)

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

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

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

$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'));

例如,here's a full list of all attributes that can be specified

答案 1 :(得分:1)

检查execute来电的返回值:

if ($query->execute(array(':whoadd' => $whoadd,':doing' => $doing))) {
    // insert statment have been excuted 
}
else 
{
    // something went wrong
}

答案 2 :(得分:0)

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