mysqli为php中的查询提供0结果,但在终端

时间:2017-09-18 18:09:13

标签: php mysql

我有两个表和这两个表的关联表。我正在尝试运行一个查询,它给出了我想要的结果,从终端运行代码,但如果从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错误。

我的查询有什么问题?

更新:我的功能中有一个愚蠢的错误,收到了结果,这引起了我的困惑。当查询成功时,接收器函数显示空数组,并且当查询错误时,处理查询的函数显示空或失败结果(不是上面的那个)。我一直在查询中查找错误,而不是查看其他地方。抱歉浪费你的时间。

3 个答案:

答案 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)

谢谢你的回答,你帮我看了别的地方。

事实是我在其他地方犯了一个错误。我正在将结果加载到数组中,而我只想得到一个结果,而收到它的函数实际上是试图从不同的变量中获取数据......

这有点令人尴尬,但我花了好几个小时来搞清楚,所以我不得不问。

抱歉,感谢您的帮助!