我想知道如何检查是否执行了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数据库运行查询。所以,有什么好的选择?
答案 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。