Php 如何从Select语句中检索行
我需要将行存储在数组中,但似乎无法使其工作,代码如下: 我确信$result=$stmt->get_result();不起作用 当我在浏览器中测试时,输出为空Php 如何从Select语句中检索行,php,Php,我需要将行存储在数组中,但似乎无法使其工作,代码如下: 我确信$result=$stmt->get_result();不起作用 当我在浏览器中测试时,输出为空 <?php include "connect.php"; $uid = $_REQUEST["U_ID"]; $stmt = $mysqli->prepare("SELECT * FROM U_User WHERE U_ID = ?"); $stmt->bind_param("d", $uid); $stmt-
<?php
include "connect.php";
$uid = $_REQUEST["U_ID"];
$stmt = $mysqli->prepare("SELECT * FROM U_User WHERE U_ID = ?");
$stmt->bind_param("d", $uid);
$stmt->execute();
$stmt->fetch();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc())
{
$users[] = $row;
}
$stmt->close();
$arr = array('user' => $users);
echo json_encode($arr);
mysqli_close($conn);
?>
就像php\u nub\u qq所说的那样。我改用PDO,效果很好
<?php
include "connect.php";
$uid = $_REQUEST["U_ID"];
$q = $conn->prepare("SELECT * FROM U_User WHERE U_ID = :uid");
$q->execute(array(':uid' => $uid));
$q->setFetchMode(PDO::FETCH_ASSOC);
while ($r = $q->fetch()) {
$users[] = $r;
}
$q = $conn->prepare("SELECT * FROM P_Post u WHERE P_U_ID = :uid");
$q->execute(array(':uid' => $uid));
$q->setFetchMode(PDO::FETCH_ASSOC);
while ($r = $q->fetch()) {
$posts[] = $r;
}
$q = $conn->prepare("SELECT * FROM T_Thread u WHERE T_U_ID = :uid");
$q->execute(array(':uid' => $uid));
$q->setFetchMode(PDO::FETCH_ASSOC);
while ($r = $q->fetch()) {
$threads[] = $r;
}
$arr = array('user' => $users, 'post' => $posts, 'thread' => $threads);
echo json_encode($arr);
$conn = null;
?>
SQL注入从何而来?U\U ID列是整数还是双精度?另外,我认为$stmt->fetch()是不必要的。如果输出为空,那么即使最后的JSON生成也不会成功。启用错误报告$stmt->fetch()代码>,$result=$stmt->get_result()代码>,而($row=$result->fetch_assoc())
?我相信每次调用后,每个函数都会将内部指针向前移动,所以最后一个->($row=$result->fetch_assoc())
试图返回第三个结果,我猜您的查询只返回1。很抱歉,我的回答有误导性,我没有注意到您使用的是mysqli而不是PDO。我真的建议你改用PDO,一旦你掌握了它就会容易得多。