我使用 PDO 连接到我的数据库,我不知道哪种方法比更新、删除和插入、PDO::exec 或 PDO::excute 的另一种方法更好。 我应该使用哪个?
最佳答案
虽然这两种方法具有相似的命名(exec、execute),但它们适用于不同的场景:
exec
用于获取受影响的行数。/** * (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)<br/> * Execute an SQL statement and return the number of affected rows * @link http://php.net/manual/en/pdo.exec.php * @param string $statement <p> * The SQL statement to prepare and execute. * </p> * <p> * Data inside the query should be properly escaped. * </p> * @return int <b>PDO::exec</b> returns the number of rows that were modified * or deleted by the SQL statement you issued. If no rows were affected, * <b>PDO::exec</b> returns 0. * </p> * This function may * return Boolean <b>FALSE</b>, but may also return a non-Boolean value which * evaluates to <b>FALSE</b>. Please read the section on Booleans for more * information. Use the === * operator for testing the return value of this * function. * <p> * The following example incorrectly relies on the return value of * <b>PDO::exec</b>, wherein a statement that affected 0 rows * results in a call to <b>die</b>: * <code> * $db->exec() or die(print_r($db->errorInfo(), true)); * </code> */ public function exec ($statement) {}
例子:
$myQuery = "UPDATE users SET email = 'testing'"; $affectedRows = $db->exec($myQuery);
execute
用于传递要在查询中绑定(bind)的参数数组。/** * (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)<br/> * Executes a prepared statement * @link http://php.net/manual/en/pdostatement.execute.php * @param array $input_parameters [optional] <p> * An array of values with as many elements as there are bound * parameters in the SQL statement being executed. * All values are treated as <b>PDO::PARAM_STR</b>. * </p> * <p> * You cannot bind multiple values to a single parameter; for example, * you cannot bind two values to a single named parameter in an IN() * clause. * </p> * <p> * You cannot bind more values than specified; if more keys exist in * <i>input_parameters</i> than in the SQL specified * in the <b>PDO::prepare</b>, then the statement will * fail and an error is emitted. * </p> * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure. */ public function execute (array $input_parameters = null) {}
示例(当然这也可能是
UPDATE
或DELETE
查询):$myQuery = 'SELECT * FROM users WHERE username = :username'; $params = array(':username' => 'admin'); $db->query($myQuery)->execute($params);
查询
返回一个PDOStatement
对象/** * (PHP 5 >= 5.1.0, PECL pdo >= 0.2.0)<br/> * Executes an SQL statement, returning a result set as a PDOStatement object * @link http://php.net/manual/en/pdo.query.php * @param string $statement <p> * The SQL statement to prepare and execute. * </p> * <p> * Data inside the query should be properly escaped. * </p> * @return PDOStatement <b>PDO::query</b> returns a PDOStatement object, or <b>FALSE</b> * on failure. */ public function query ($statement) {}
欲了解更多信息,您可以访问 PHP Docs或者如果您使用的是 PHPStorm
,您可以查看 PDO.php
类的源代码。
关于php - PDO::exec 还是 PDO::execute?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26849105/