Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysqli在php中为查询提供0结果,但在终端中提供正确的结果_Php_Mysql - Fatal编程技术网

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

mysqli在php中为查询提供0结果,但在终端中提供正确的结果,php,mysql,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 = 'best

我有两张表和这两张表的关联表。我试图运行一个查询,从终端运行代码时会得到我想要的结果,但如果从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”,它会返回一个未知的列bestproject错误

我的问题出了什么问题


更新:我收到结果的函数中有一个愚蠢的错误,这导致了我的困惑。当查询成功时,receiver函数显示空数组;当查询错误时,处理查询的函数也显示空或失败的结果(不是上面的结果)。我一直在搜索查询中的错误,而不是查看其他地方。很抱歉浪费了您的时间。

您在那里所做的一切都是选中了哪些表和内容。您还需要一个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";
}
$sql=“从MyGuests中选择id、firstname、lastname”;
$result=$conn->query($sql);
如果($result->num_rows>0){
//每行的输出数据
而($row=$result->fetch_assoc()){
echo“id:.$row[“id”]。-Name:.$row[“firstname”]。$row[“lastname”]。
”; } }否则{ 回显“0结果”; }
正如您所看到的,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";
}
$sql=“从MyGuests中选择id、firstname、lastname”;
$result=$conn->query($sql);
如果($result->num_rows>0){
//每行的输出数据
而($row=$result->fetch_assoc()){
$id=$row['id'];
$first=$row['firstname'];
$last=$row['last'];
echo“id:$id-Name:$first$last
”; } }否则{ 回显“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";
}
$sql=“从MyGuests中选择id、firstname、lastname”;
$result=$conn->query($sql);
如果($result->num_rows>0){
//每行的输出数据
而($row=$result->fetch_assoc()){
echo“id:.$row[“id”]。-Name:.$row[“firstname”]。$row[“lastname”]。
”; } }否则{ 回显“0结果”; }
正如您所看到的,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";
}
$sql=“从MyGuests中选择id、firstname、lastname”;
$result=$conn->query($sql);
如果($result->num_rows>0){
//每行的输出数据
而($row=$result->fetch_assoc()){
$id=$row['id'];
$first=$row['firstname'];
$last=$row['last'];
echo“id:$id-Name:$first$last
”; } }否则{ 回显“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传递参数

第一个问题对我来说没有意义。导致未知列错误的原因是您没有使用单引号,因此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传递参数

谢谢你的回答,你帮我找了其他地方

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

这有点尴尬,但我花了几个小时才弄明白,所以我不得不问


对不起,谢谢你的帮助

谢谢你的回答,你帮我找了其他地方

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

这有点尴尬,但我花了几个小时才弄明白,所以我不得不问


对不起,谢谢你的帮助

你能再解释一下“上面给出的结果是0”吗。你是说结果上的num_行吗?是的num_行是0,但这是不可能的。我手动记录只是为了测试它,它在终端中工作。它实际上可能返回正确
num_rows
并不是绝对可靠的。从文档:
mysqli_num_rows()的行为取决于使用的是缓冲还是非缓冲结果集。对于未缓冲的结果集,在检索结果中的所有行之前,mysqli_num_rows()不会返回正确的行数。
在查询中找不到任何错误。我认为您应该尝试通过将此查询放入变量中并在if语句中进行查询(如手册中所述),查看mysql是否返回任何错误(由于格式问题):您可能需要
store\u result()
将结果缓冲到内存中。你能再解释一下“上面给出的结果是0”吗。你是说结果上的num_行吗?是的num_行是0,但这是不可能的。我手动记录只是为了测试它,它在终端中工作。它实际上可能返回正确
num_rows
并不是绝对可靠的。从文档:
mysqli_num_rows()的行为取决于使用的是缓冲还是非缓冲结果集。对于未缓冲的结果集,mysqli_num_rows()将不会返回正确的n