PDO :: exec还是PDO :: execute? [英] PDO::exec or PDO::execute?
问题描述
我使用PDO连接到数据库,但我不知道哪种方法比UPDATE,DELETE和INSERT,PDO :: exec或PDO :: excute的方法更好. 我应该使用哪个?
I use PDO to connect to my database and I don't know which method is better than the other one for UPDATE, DELETE and INSERT, PDO::exec or PDO::excute. Which should I use?
推荐答案
尽管这两种方法都有类似的命名(exec,execute),但它们都打算在不同的场景中使用:
Although both methods have a similar naming (exec,execute) they're meant to be used in different scenarios:
-
exec
用于获取受影响的行数.
exec
is used to get the number of affected rows.
/**
* (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
.
execute
is used when you want to pass an array of parameters to be bind in the query.
/**
* (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
查询):
Example (of course this might be an UPDATE
or DELETE
query as well):
$myQuery = 'SELECT * FROM users WHERE username = :username';
$params = array(':username' => 'admin');
$db->query($myQuery)->execute($params);
query
返回PDOStatement
对象
query
returns a PDOStatement
object
/**
* (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文档,或者再次使用PHPStorm
,您可以查看PDO.php
类的源代码.
For more information you can visit the PHP Docs or in case you're using PHPStorm
you can go though the source code of the PDO.php
class.
这篇关于PDO :: exec还是PDO :: execute?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!