本文主要是分析PHP中exec()和execute()方法的用法和区别,以方便在之后的工作中更加的深入了解。其中exec()函数主要是执行一条SQL语句,并返回受影响的行数,但此函数不会返回结果集合。而execute()函数则是用于执行已经预处理过的语句,并且只是返回执行结果成功或失败。
一、官网分析1、PDO::exec
— Execute an SQL statement and return the number of affected rows
2、PDOStatement::execute
— Executes a prepared statement
二、用法的区别1、exec示例用法
$sql = "UPDATE table SET name='book' WHERE id > 8";
$result = $db->exec($sql);
echo '影响行数:' . $result;
2、execute示例用法
$id = 9;
$sth = $db->prepare('SELECT * FROM table WHERE id < :id');
$sth->execute(array(
':id' => $id
));
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
3、execute的多次运行,预处理有助于性能的提升
$sth = $db->prepare("SELECT * FROM table WHERE id = :id");
$sth->execute(array(
':id' => '6'
));
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
echo "
".'换行1'."
";
$sth->execute(array(
':id' => '8'
));
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
echo "
".'换行2'."
";
三、执行方法的区别1、exec()是PDO类的方法,它和PDO::query地位是并列的。
2、execute()是PDOStatement类的方法。
四、返回结果的区别1、PDO::exec()函数是执行一条SQL语句,并返回受影响的行数,注意:此函数不会返回结果集合。
2、PDOStatement::execute()函数是用于执行已经预处理过的语句,需要配合prepare()函数使用,成功时返回 TRUE,失败时返回 FALSE。
五、执行安全的区别1、exec()方法需要对开发者自行对输入的sql语句进行安全检查。
2、execute()方法支持绑定参数,无需考虑安全问题,使用时稍微麻烦一些。