可以';t获取要在php中打印的准备好的语句


Can't get a prepared statement to print in php

我正试图掌握mysqli,但发现与现在贬值的mysql相比,这是一场斗争。到目前为止,使用旧方法,我已经能够在关联数组中获取有关表的信息。我正在试图形成一个准备好的语句,并将echoid的数字返回。我也希望能够打印已绑定的整个sql语句,但由于我甚至无法从单个SELECT语句中回显id编号,因此目前这是不可能的。

$db = new mysqli('xxx', 'xx', 'xx', 'xxxx');
$sql = "SELECT user_id, name FROM users WHERE name=?"
$statement = $db -> prepare($sql);
$statement -> bind_param("s", "Emma");
$statement -> execute();
$statement -> bind_result($id, $name);
$output = $statement -> fetch();
echo $output -> $id . " " . $name;

我好像在bind_result线迷路了。我想如果statement是一个对象,那么我应该能够以我设计的形式echo它们?当我刷新页面时,我什么都没有得到。我的表中有两个条目,其中一个条目确实有上面使用的名称字符串。

你想得太复杂了。试试这个:

$db = new mysqli('xxx', 'xx', 'xx', 'xxxx');
$sql = "SELECT user_id, name FROM users WHERE name=?";
$statement = $db->prepare($sql);
$statement->bind_param("s", "Emma");
$statement->execute();
$statement->bind_result($id, $name);
while ($statement->fetch()) {
  echo $id . " " . $name;
}

bind_result()方法注意,对于执行的每个$statement->fetch(),都会在变量$id$name中获得新值。

您应该查看这些方法的良好文档。