我做了一个查询,但没有在屏幕上显示任何内容,当我打开我执行查询的页面时,查询速度很慢,并且没有显示任何内容
$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'];
}
答案 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'];
}