我使用PDO连接到我的数据库,我不知道哪个方法比UPDATE,DELETE和INSERT,PDO :: exec或PDO :: excute更好。 我应该使用哪种?
答案 0 :(得分:3)
虽然两种方法都有类似的命名(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
。
/**
* (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);
query
会返回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
类的源代码。