我使用PDO连接到我的数据库,我不知道哪种方法比另一种方法更适合进行更新、删除和插入、PDO::exec或PDO::ex可爱。我该用哪一种?
发布于 2015-01-26 19:15:10
虽然这两种方法都有类似的命名(exec、execute),但它们应该在不同的场景中使用:
exec用于获取受影响的行数。
/** *(PHP5 >= 5.1.0,PECL pdo >= 0.1.0) *执行一条>=语句,并返回受影响的行数* @link http://php.net/manual/en/pdo.exec.php * @param string $statement *要准备和执行的http://php.net/manual/en/pdo.exec.php语句。*查询中的数据应正确转义。**@ returns::exec返回由您发出的SQL语句修改或删除的行数。如果没有任何行受到影响,* PDO::exec返回0。**此函数可能*返回布尔值FALSE,但也可能返回一个非布尔值,该值*计算为FALSE。有关更多信息,请阅读关于布尔人的部分。使用=== *操作符测试此*函数的返回值。**以下示例不正确地依赖* PDO::exec的返回值,其中影响0行*的语句将导致调用die:** $db-> exec ()或die(print_r($db->errorInfo(),true);* */公共函数exec ($statement) {}
示例:
$myQuery =“更新用户设置电子邮件=‘测试’”;$affectedRows = $db->exec($myQuery);execute。
/** *(PHP5 >= 5.1.0,PECL pdo >= 0.1.0) *执行已准备好的语句* @link http://php.net/manual/en/pdostatement.execute.php *@ parameters $input_parameters可选*一个值数组,其元素数量与正在执行的绑定*参数相同。*所有值都被视为PDO::PARAM_STR。*不能将多个值绑定到单个参数;例如,不能将两个值绑定到IN() *子句中的单个命名参数。*您不能绑定比指定的值更多的值;如果* input_parameters中存在的键比PDO::then中指定的*中的键多,那么该语句将失败,并发出一个错误。**@在成功时返回真或在失败时返回假。*/公共函数执行(数组$input_parameters = null) {}
示例(当然,这也可能是UPDATE或DELETE查询):
$myQuery = 'SELECT * FROM username = :username';$params = array(':username‘=> 'admin');$db->query($myQuery)->execute($params);query返回一个PDOStatement对象
/** *(PHP5 >= 5.1.0,PECL pdo >= 0.2.0) *执行一条PDOStatement语句,将结果集返回为PDOStatement对象* @link http://php.net/manual/en/pdo.query.php * @param string $statement *用于准备和执行的PDOStatement语句。*查询中的数据应正确转义。**@返回PDOStatement PDO::PDOStatement对象,或失败时返回FALSE *。*/公共函数查询($statement) {}有关更多信息,您可以访问PHP文档,或者在使用PHPStorm的情况下,可以查看PDO.php类的源代码。
https://stackoverflow.com/questions/26849105
复制相似问题