gpt4 book ai didi

php - PDO::exec 还是 PDO::execute?

转载 作者:行者123 更新时间:2023-12-04 02:22:29 28 4
gpt4 key购买 nike

我使用 PDO 连接到我的数据库,我不知道哪种方法比更新、删除和插入、PDO::exec 或 PDO::excute 的另一种方法更好。我应该使用哪个?

最佳答案

虽然这两种方法具有相似的命名(exec、execute),但它们适用于不同的场景:

  1. exec 用于获取受影响的行数。

    /**
    * (PHP 5 &gt;= 5.1.0, PECL pdo &gt;= 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);
  2. execute 用于传递要在查询中绑定(bind)的参数数组。

    /**
    * (PHP 5 &gt;= 5.1.0, PECL pdo &gt;= 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) {}

    示例(当然这也可能是UPDATEDELETE 查询):

    $myQuery = 'SELECT * FROM users WHERE username = :username';
    $params = array(':username' => 'admin');
    $db->query($myQuery)->execute($params);
  3. 查询返回一个PDOStatement对象

    /**
    * (PHP 5 &gt;= 5.1.0, PECL pdo &gt;= 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com