我有两个表和这两个表的关联表。我正在尝试运行一个查询,它给出了我想要的结果,从终端运行代码,但如果从php执行,则给出零或未知的列结果。
这是我的疑问:
$result = $mysqli->query("SELECT * FROM projects p
JOIN projects_groups pg on p.projectid = pg.projectid
JOIN groups g on g.groupid = pg.groupid
WHERE p.projectid = 'bestproject'");
完全像上面那样运行代码会给我0结果。如果我用变量切换'bestproject',它会给我一个unkwown列bestproject错误。
我的查询有什么问题?
更新:我的功能中有一个愚蠢的错误,收到了结果,这引起了我的困惑。当查询成功时,接收器函数显示空数组,并且当查询错误时,处理查询的函数显示空或失败结果(不是上面的那个)。我一直在查询中查找错误,而不是查看其他地方。抱歉浪费你的时间。
答案 0 :(得分:0)
您在那里所做的一切都选择了哪些表格和内容。你需要有一个php函数来写出内容。
示例:
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
正如你所看到的那样,echo写出了表格的内容。你也可以这样做,你不必使用$ row ['id']只需将它保存在另一个变量中:
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$id = $row['id'];
$first = $row['firstname'];
$last = $row['last'];
echo "id: $id - Name: $first $last<br>";
}
} else {
echo "0 results";
}
当然你需要在表格中有一些内容
答案 1 :(得分:0)
第一个问题对我没有意义。导致未知列错误的原因是您没有使用单引号,因此MySQL将尝试使用您的变量名称查找列,而不是将其作为值处理。
$result = $mysqli->query("SELECT * FROM projects p
JOIN projects_groups pg on p.projectid = pg.projectid
JOIN groups g on g.groupid = pg.groupid
WHERE p.projectid = '".$argument."'");
为了避免SQL注入,最好使用PDO传递参数。 http://php.net/manual/en/book.pdo.php
答案 2 :(得分:0)
谢谢你的回答,你帮我看了别的地方。
事实是我在其他地方犯了一个错误。我正在将结果加载到数组中,而我只想得到一个结果,而收到它的函数实际上是试图从不同的变量中获取数据......
这有点令人尴尬,但我花了好几个小时来搞清楚,所以我不得不问。
抱歉,感谢您的帮助!