Php 我可以从mysqli_stmt_bind_result获取结果而不必循环吗?
作为参考,我创建了:Php 我可以从mysqli_stmt_bind_result获取结果而不必循环吗?,php,mysqli,Php,Mysqli,作为参考,我创建了: $conn = new mysqli($host, $user, $password, $database) or die("Error " . mysqli_error($link)); $userID = json_decode(file_get_contents('php://input'), true)["userID"]; $sql = "SELECT name FROM users WHERE id = ?"; $st
$conn = new mysqli($host, $user, $password, $database) or die("Error " . mysqli_error($link));
$userID = json_decode(file_get_contents('php://input'), true)["userID"];
$sql = "SELECT name
FROM users
WHERE id = ?";
$stmt = mysqli_prepare($conn, $sql);
if ($stmt) {
mysqli_stmt_bind_param($stmt, "i", $userID);
if (mysqli_stmt_execute($stmt)) {
mysqli_stmt_store_result($stmt);
if (mysqli_stmt_num_rows($stmt) > 0) {
mysqli_stmt_bind_result($stmt, $name);
while (mysqli_stmt_fetch($stmt)) {
if ($name != "") {
echo '{"name": ' . $name . '}';
} else {
echo '{"name": "Anonymous" }';
}
}
}
}
}
按照现在的方式,它可以获取用户名
然而,当我知道我的查询只返回一行时,我不愿意使用while循环,因此我寻找了不使用循环来获取值的方法,但找不到任何方法
我试图删除while循环只是为了看看会发生什么,但它无法获取用户名。有没有一种方法可以在不使用循环的情况下使用
mysqli\u stmt\u bind\u result
获得查询结果?如果没有,还有什么我可以用来做我想做的吗?是的,当你只需要一行,并且知道它只会返回那一行,要返回,你不需要循环任何东西-这是多余的
您可以删除while
-循环,但仍然需要参数mysqli\u stmt\u fetch($stmt)
来实际获取结果
if ($stmt = mysqli_prepare($mysqli, $sql)) {
mysqli_stmt_bind_param($stmt, "i", $userID);
if (mysqli_stmt_execute($stmt)) {
mysqli_stmt_store_result($stmt);
if (mysqli_stmt_num_rows($stmt) > 0) {
mysqli_stmt_bind_result($stmt, $name);
mysqli_stmt_fetch($stmt);
if (!empty($name)) {
echo '{"name": ' . $name . '}';
} else {
echo '{"name": "Anonymous" }';
}
} else {
// No results!
echo "No results";
}
}
}
酷,这正是我想知道的。另一方面,我注意到您在
上使用了empty
函数=代码>操作员。有什么原因吗?基本上是一样的,但我发现empty()
更容易阅读。还有什么你想知道的,就说出来;-)当您在PHP.net上查找正在使用的函数时,也有很多很好的示例:-)