查询更慢

时间:2016-10-04 16:59:36

标签: php mysql sql mysqli

我做了一个查询,但没有在屏幕上显示任何内容,当我打开我执行查询的页面时,查询速度很慢,并且没有显示任何内容

$query="SELECT * FROM Dettagli_macchina WHERE  macchine_id='$macchine' and Email='$_SESSION[login_user]'";
$result = mysqli_query($conne,$query);
                    while($row=mysqli_num_rows($result)){
                        echo $row['COMPONENTE'];

                    }

4 个答案:

答案 0 :(得分:4)

mysqli_num_rows()仅用于获取行数而不是行数据。

您需要使用mysqli_fetch_*()

while($row=mysqli_fetch_array($result)){ 
    echo $row['COMPONENTE']; 
}

为什么这个查询速度慢?因为您在这里使用无限循环,所以总是 TRUE

while($row=mysqli_num_rows($result))

还有一个故事,我希望您在文件中使用session_start(),但假设如果找不到$_SESSION或未启动,则查询将失败。

最后,这只是关于命名约定的建议,您使用小写字母,资本小,全资本的列名称,这与答案无关但您必须了解这门艺术。

这有助于您了解命名约定:Database, Table and Column Naming Conventions?

此引用将帮助您了解mysqli_fetch_array()的工作原理:http://php.net/manual/en/mysqli-result.fetch-array.php

答案 1 :(得分:0)

你正在获取记录但使用mysqli_num_rows()返回总行数/记录替换为mysqli_fetch_array()这是工作示例。

$query="SELECT * FROM Dettagli_macchina WHERE  macchine_id='$macchine' and Email='$_SESSION[login_user]'";
$result = mysqli_query($conne,$query);
while($row = mysqli_fetch_array($result)) { //replace mysqli_num_rows with mysqli_fetch_array 
      echo $row['COMPONENTE'];
    }

答案 2 :(得分:0)

请尝试使用此值作为返回值,如果您需要原始数量,则语句将有所不同。

  $query="SELECT * FROM Dettagli_macchina WHERE  macchine_id='$macchine' and Email='$_SESSION[login_user]'";
    $result = mysqli_query($conne,$query);
                        while($row=mysqli_fetch_array($result)){
                            echo $row['COMPONENTE'];

                        }

答案 3 :(得分:0)

正如其他人所指出的那样,你混淆了mysqli_num_rows函数,这里我用它来打印找到的结果数,然后在将mysqli结果对象转换为名为$ row

    echo 'Found '. mysqli_num_rows($result) .' results';

    while ($row = mysqli_fetch_array($result)) { 
    echo $row['COMPONENTE'];
   }