【问题标题】:MySQLi OOP Bind Parameters ErrorMySQLi OOP 绑定参数错误
【发布时间】:2016-08-31 21:08:51
【问题描述】:

我从 MySQLi 开始,我从一个简单的选择开始,它可以工作:

$sql = "SELECT nombres, apellidos FROM users WHERE user = 'juan'";
$result = $con->query($sql);
while($row = $result->fetch_object()){
    print $row->nombres . '<br />';
    print $row->apellidos . '<br />';
}

但是当我尝试使用准备好的语句时没有显示结果......我做错了什么?

$user = 'juan';
$sql = "SELECT nombres, apellidos FROM users WHERE user = ?";
$result = $con->prepare($sql);
$result->bind_param('s', $user);
$result->execute();

while($row = $result->fetch_object()){
    print $row->nombres . '<br />';
    print $row->apellidos . '<br />';
}

【问题讨论】:

    标签: php mysql oop mysqli bind


    【解决方案1】:

    在准备好的语句中使用 fetch 有点不同。还有另一个用于 mysqli 准备好的语句的 fethcing API,您需要使用 -&gt;bind_result()stmt_fetch() 才能使其工作。

    $result->bind_param('s', $user);
    $result->execute();
    $result->bind_result($nombres, $apellidos);
    
    while($result->fetch()){
        print $nombres . '<br />';
        print $apellidos . '<br />';
    }
    

    【讨论】:

      【解决方案2】:

      执行将返回一个mysqli_statement 对象。如果您想像处理mysqli_result 对象一样处理查询结果,您必须运行$stmt-&gt;get_result() 将其转换为mysqli_result 对象,然后您可以使用while 循环作为mysqli_result 对象处理正如你所做的那样

      $user = 'juan';
      $sql = "SELECT nombres, apellidos FROM users WHERE user = ?";
      $stmt= $con->prepare($sql);
      $stmt->bind_param('s', $user);
      $stmt->execute();
      
      $result = $stmt->get_result();
      
      while($row = $result->fetch_object()){
          print $row->nombres . '<br />';
          print $row->apellidos . '<br />';
      }
      

      不幸的是,此功能/方法仅在您安装了本机驱动程序mysqlnd 时可用。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 2010-12-03
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多