在有数据的情况下,从 php/mysqli 查询中获取任何结果行/字段



问题的解释是:

  • 查询 sql 在运行时返回 6 行数据(每行 14 个字段( phpMyAdmin
  • 在 php 页面上mysqli_num_rows返回: 6
  • print_r($sql_res)回报:mysqli_result Object ( [current_field] => 0 [field_count] => 14 [lengths] => [num_rows] => 6 [type] => 0 )
  • var_dump($sql_res)回报:object(mysqli_result)#1 (5) { ["current_field"]=> int(0) ["field_count"]=> int(14) ["lengths"]=> NULL ["num_rows"]=> int(6) ["type"]=> int(0)

数据库中有数据,但由于没有返回包含字段值的数据,因此未解析到表结构中。任何帮助或指示将不胜感激。 数据库连接正常,我的其他页面正常工作,我在查询中使用会话变量($selected和$selfair(,让我头疼的 php 代码是:

<?php
$sql = "SELECT har_id, har_fair_id, har_kat_id, har_tarih, har_co_id, har_desc, har_docno, har_kur, har_debit, har_credit, har_used, har_invoiced, har_cancelled, har_schid FROM hareketler WHERE har_co_id =". $selected." AND har_fair_id =". $selfair;
echo $sql."<br><br>";
//sql returns correct statement
$sql_res = mysqli_query($con, $sql);
print_r($sql_res)."<br><br>";
echo "<br><br>".mysqli_num_rows($sql_res);
// row count is 6 but no other data is fetched from db!
echo "<br><br>".var_dump($sql_res);
while($row = mysqli_fetch_array($sql_res,MYSQLI_ASSOC));{
// detail rows are NOT fetched!
if($row<>''){
echo '<tbody>';
echo '<tr>';
echo '<td class="katdata">'.$row['har_id'].'</td>';
echo '<td class="katdata">'.$row['har_fair_id'].'</td>';
echo '<td class="katdata">'.$row['har_kat_id'].'</td>';
echo '<td class="katdata">'.$row['har_tarih'].'</td>';
echo '<td class="katdata">'.$row['har_co_id'].'</td>';
echo '<td class="katdata">'.$row['har_desc'].'</td>';
echo '<td class="katdata">'.$row['har_docno'].'</td>';
echo '<td class="katdata">'.$row['har_kur'].'</td>';
echo '<td class="katdata">'.$row['har_debit'].'</td>';
echo '<td class="katdata">'.$row['har_credit'].'</td>';
echo '<td class="katdata">'.$row['har_used'].'</td>';
echo '<td class="katdata">'.$row['har_invoiced'].'</td>';
echo '<td class="katdata">'.$row['har_cancelled'].'</td>';
echo '<td class="katdata">'.$row['har_schid'].'</td>';
echo '</tr>';
echo '</tbody>';
}
else {
echo "<br><br>No data returned!";
// sql is correct but no detail data is fetched!
}
}
?>

您有一个拼写错误:

while($row = mysqli_fetch_array($sql_res,MYSQLI_ASSOC));{

应该是

while($row = mysqli_fetch_array($sql_res,MYSQLI_ASSOC)){

您必须确保要比较的值周围有一个单引号('(。 例如

SELECT * FROM table WHERE column_name = 'value';

会工作,但是

SELECT * FROM table WHERE column_name = value;

行不通。

因此,请确保您的输出是:

SELECT har_id, har_fair_id, har_kat_id, har_tarih, har_co_id, har_desc, har_docno, 
har_kur, har_debit, har_credit, har_used, har_invoiced, har_cancelled, har_schid 
FROM hareketler WHERE har_co_id ='selected' AND har_fair_id ='selfair';

为此,请将 sql 更改为

$sql = "SELECT har_id, har_fair_id, har_kat_id, har_tarih, har_co_id, har_desc, 
har_docno, har_kur, har_debit, har_credit, har_used, har_invoiced, har_cancelled, 
har_schid FROM hareketler WHERE har_co_id ='". $selected."' AND har_fair_id ='". 
$selfair."';";

这应该可以解决您的问题,并且您的 while 循环中有一个放错位置的分号。while($row = mysqli_fetch_array($sql_res,MYSQLI_ASSOC));{.你需要解决这个问题 谢谢,希望对您有所帮助。

最新更新