【问题标题】:What is the alternative mysqli execute statement for a PDO execute statement?PDO 执行语句的替代 mysqli 执行语句是什么?
【发布时间】:2019-09-16 18:29:49
【问题描述】:

我有一个 pdo 语句的 sn-p,我想将其用作 mysqli 语句,但我似乎无法以某种方式掌握它。

我正在尝试将 mysqli->execute(array()) 从 pdo 语句“转换”为 mysqli 语句。

据我了解,有execute() 语句,它不需要mysqli 的参数,但使用PDO 它需要一个参数?

这是代码,我想将其转换为 mysqli 语句:

$sql = "SELECT * FROM users WHERE username = :username";
        $sth = $GLOBALS["DB"]->prepare($sql);
        $sth->execute(array(":username" => $username));
        $result = $sth->fetchAll();

        if (!empty($result)) {
            $privUser = new PrivilegedUser();
            $privUser->user_id = $result[0]["user_id"];
            $privUser->username = $username;
            $privUser->password = $result[0]["password"];
            $privUser->email_addr = $result[0]["email_addr"];
            $privUser->initRoles();
            return $privUser;
        } else {
            return false;
        }

这就是我当前的代码:

$sql = "SELECT * FROM users WHERE user_id = ?";
          $stmt = $mysqli -> prepare($sql);
          $stmt->bind_param('s', $user_id);
// line below is what i need to convert to a mysqli statement
          $stmt->execute(array(":user_id" => $user_id));
          //$stmt->store_result();
          $result = $stmt->fetchAll();

          if (!empty($result)) {
              $privUser = new PrivilegedUser();
              $privUser->user_id = $result[0]["user_id"];
              $privUser->username = $user_id;
              $privUser->password = $result[0]["password"];
              $privUser->email_addr = $result[0]["email_addr"];
              $privUser->initRoles();
              return $privUser;
          } else {
              return false;
          }

【问题讨论】:

  • 使用 mysqli,调用 bind_param() 是链接绑定变量的唯一方法,所以调用 execute() 将是 $stmt->execute();
  • 是的,这也是我的想法,但我怎样才能用 mysqli 实现相同的输出?以及如何使用 mysqli 执行数组?
  • 你说得对,我想的有点复杂。这是这样做的唯一方法。谢谢!

标签: php arrays mysqli pdo execute


【解决方案1】:

就像上面所说的 Nigel Ren,引用: “使用 mysqli,对 bind_param() 的调用是链接绑定变量的唯一方法,因此对 execute() 的调用实际上就是 $stmt->execute();”

【讨论】:

    猜你喜欢
    • 2016-04-18
    • 1970-01-01
    • 2013-04-09
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 2012-12-16
    • 1970-01-01
    相关资源
    最近更新 更多