使用 mysqli bind_param() 使用 WHERE 子句查询不起作用

Query with WHERE clause not working using mysqli bind_param()

我正在创建一个网络服务,我需要从中获取一些数据 mysql 并在移动应用程序中检索它。

我整天都在尝试使用 WHERE 语句进行查询,但没有成功。

没有 WHERE 的普通查询工作正常。

我也在 stack overflow 和其他论坛上浏览了所有类似的问题,但是 none 和我的问题是一样的。

这是我当前的代码:

<?php

$con=mysqli_connect("Hidden credentials");

if (mysqli_connect_errno())
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

if ($stmt = $con->prepare("SELECT 
team.id as teamId,
team.team_name as teamName, 
user.id as userId, 
user.username as username, 
team_members.role as role

FROM team_members 
inner join user on team_members.user_id = user.id 
inner join team on team_members.team_id = team.id 
where user.id = ?
")) { 
   $stmt->bind_param("i", $id); 
   $stmt->execute(); 
   $result = $stmt->get_result();

$resultArray = array();
 $tempArray = array();

 while($row = $result->fetch_object())
 {
    $tempArray = $row;
    array_push($resultArray, $tempArray);
 }

 echo json_encode($resultArray);

 $stmt->close();

}
?>

如果我删除行 where user.id=? 它会正确获取数据。

运行 phpMyAdmin 上的查询一切正常,所以查询没有任何问题。

您的查询无效,因为您的变量 id 不存在(在您显示的代码中)。

修复: 创建变量 id 并将一些数据放入该变量。

例如:

$id = 5; 

或动态地:

来自 URL 使用 GET 方法:

$id = $_GET['id'];
  • 这允许您从 URL 获取参数。但是你必须通过link来设置这个参数。例如:<a href="index.php?id=5">。通过单击此 a 标记,您将被重定向到页面 index.php,参数 id 等于 5.

来自POST方法:

例如你有这个 FORM:

<form method="post">
    <input type="number" name="id">
    <input type="submit" name="submit">
</form>
  • 提交此 FORM 后,值将保存在 $_POST 中。您可以通过 $_POST["name"] 访问它们。在这种情况下 $_POST["id"].

    $id = $_POST["id"];

来自 SESSION:

$id = $_SESSION["id"];
  • 但首先你要定义 $_SESSION["id"]。您可以在域的其他页面中访问此变量 ($_SESSION["id"])。

变量 $id 不存在(在您的代码中)。如果你想动态设置变量,你可以使用 $id = $_GET['id'];。这将从 url 中获取值并将其放入变量中!