Php 从数据库中获取某人的详细信息?
我正在尝试获取一个人使用其id的详细信息,我有以下代码,它显示了一个错误Php 从数据库中获取某人的详细信息?,php,mysql,Php,Mysql,我正在尝试获取一个人使用其id的详细信息,我有以下代码,它显示了一个错误 $id = isset($_GET['id']) ? isset($_GET['id']) : ""; $sql = "SELECT * FROM `ArtListing` where `id` = $id"; $result = $conn->query($sql); if (!$result) { die("Query failed " . $
$id = isset($_GET['id']) ? isset($_GET['id']) : "";
$sql = "SELECT * FROM `ArtListing` where `id` = $id";
$result = $conn->query($sql);
if (!$result) {
die("Query failed " . $conn->error);
}
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo $row["id"] . "." . $row["name"] ;
}
如果我使用的id是一些随机数,它会返回详细信息。它向我显示的错误如下
查询失败您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“”附近要使用的正确语法
不能简单地将变量放入字符串中 你需要正确地将其粘合成刺的一部分,如下所示
$sql = "SELECT * FROM `ArtListing` where `id` = '".$id."'";
SELECT * FROM `ArtListing` where `id` = yourid; <-- incorrect
您可以在这里测试此代码
看看双引号和单引号的组合
您的SQL查询字符串创建如下
$sql = "SELECT * FROM `ArtListing` where `id` = '".$id."'";
SELECT * FROM `ArtListing` where `id` = yourid; <-- incorrect
从'ArtListing'中选择*其中'id`=yourid 您抓取的id
似乎未定义
您应该将$id
变量指定为:
$id = isset($_GET['id']) ? $_GET['id'] : "0";
为什么要将该代码放在backticks(``)中?如果该查询引发错误,那么可能是在向它提供一个非整数(假设id
列类型为INT
),其中可能包含一个或多个空格。因此,$id
可能不包含您期望的值。出于安全和其他原因,您应该使用准备好的语句,而不是变量扩展。请参阅。请注意,您构建查询的方式是不安全的。你对我敞开心扉。你应该改用。这能回答你的问题吗?这是完全错误的,因为在双引号字符串中使用变量将输出它们的值。这不是问题所在。如果预期为空字符串,则空字符串是完全正确的值。因为我们看不到数据库OP的值,所以我们不能告诉他们使用0作为值