Php 如何在SELECT*查询中使用bind_结果函数

Php 如何在SELECT*查询中使用bind_结果函数,php,mysqli,Php,Mysqli,我正在寻找一种方法,在不知道列数的情况下,从mysqli prepared语句中获取完整的行 这就是我已经成功测试过的 if ($stmt = $con->prepare("SELECT user_id FROM users where user_id = ?")) { $stmt->bind_param('s', '32'); $stmt->execute(); $stmt->bind_result($user_id);

我正在寻找一种方法,在不知道列数的情况下,从mysqli prepared语句中获取完整的行

这就是我已经成功测试过的

if ($stmt = $con->prepare("SELECT user_id FROM users where user_id = ?")) {
  $stmt->bind_param('s', '32');        
  $stmt->execute();
  $stmt->bind_result($user_id);
  while ($stmt->fetch()) {
      printf ("%s \n", $user_id);
  }
  $stmt->close();
}
这很好,但是如果我想要所有的列,那么我的查询将是*

if ($stmt = $con->prepare("SELECT * FROM users where user_id = ?")) {
  $stmt->bind_param('s', '32');        
  $stmt->execute();

  $stmt->close();
} 

如何使用mysqli prepared语句进行
SELECT*

如果要从结果集中获取未知数量的列,则不能使用
bind\u result()
。此函数适用于单列或固定列数较少的情况

要从
中获取结果,请选择*
使用
get_result()
,它将返回一个
mysqli_result
对象,您可以迭代该对象或获取一行

$user_id = 32;
$stmt = $con->prepare("SELECT * FROM users where user_id = ?");
$stmt->bind_param('s', $value);        
$stmt->execute();
$result = $stmt->get_result();
foreach($result as $row) {
    printf ("%s \n", $row['username']);
}

此函数在一些非常旧的PHP版本或针对libmysql客户端编译的版本上不可用

使用PDO而不是mysqli。有了PDO,mysqliYes中有什么方法吗?正如你可能已经了解到的,如果单击我发布的链接,请你引用任何工作示例,我只是想摆脱
bind_result()
,因为列数未知