使用 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 中获取值并将其放入变量中!
我正在创建一个网络服务,我需要从中获取一些数据 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 中获取值并将其放入变量中!