0

嘿伙计们,我很难在 mysql 中从我的表中打印所有内容。它只打印表的最后一条记录。先感谢您。

这是我的语法:

//query
$search_query="SELECT offer_no,day,time from offer where subject_id = '"              .$search_subject_id ."';";  

//execution of query    
$result = mysql_query($search_query,$dbhandle); 

//fetching result
while ($row = mysql_fetch_array($result)) {
      $results =$row['offer_no'] . "     " .$row['day']. "     " .$row['time'];
 }

输出:

1001 小家电 7:00-8:00

预期输出:

1001 MWF 7:00-8:00, 1002 MWF 8:00-9:00
4

5 回答 5

7

您需要使用连接或数组,因为$results将在每个循环上重置并最终获取最后一个结果:

大批:

  $results[] =$row['offer_no'] . "     " .$row['day']. "     " .$row['time'];

或者:

  $results .=$row['offer_no'] . "     " .$row['day']. "     " .$row['time'];

请注意:mysql_* 函数已弃用,您可以切换到 mysqli 和 PDO 并使用参数化查询来防止 SQL 注入攻击。

于 2013-09-04T05:32:30.520 回答
1

尝试这个

 while ($row = mysql_fetch_array($result)) {
    $results[] =$row['offer_no'] . "     " .$row['day']. "     " .$row['time'];
  }

 $result_string = "";
 if(is_array($results))
 {
    $result_string = implode(",",$results) 
 }
 echo $result_string;
于 2013-09-04T05:45:56.233 回答
0

它总是分配新变量试试这个

$results =$results.",".$row['offer_no'] . "     " .$row['day']. "     " .$row['time'];

让我知道它是否不起作用。

于 2013-09-04T05:32:42.113 回答
0

您必须将每一行附加到一个变量,目前,您正在覆盖该值,只留下最后一个。尝试这个:

//query
$search_query="SELECT offer_no,day,time from offer where subject_id = '"              .$search_subject_id ."';";  

//execution of query    
$result = mysql_query($search_query,$dbhandle); 

$output = "";

//fetching result
while ($row = mysql_fetch_array($result)) {
      $output .= $row['offer_no'] . "     " .$row['day']. "     " .$row['time'];
}

echo $output;

请注意,.=这是将字符串连接到变量的简写。

于 2013-09-04T05:32:53.490 回答
0

尝试喜欢$results_array

while ($row = mysql_fetch_array($result)) {
    $results[] = $row['offer_no'] . "     " .$row['day']. "     " .$row['time'];
}

您每次都将值附加到变量。因此它将保存结果数组中的最后一个元素mysql_fetch_array。但是您需要将它们分配给数组,然后它将以数组的形式维护这些数组元素的分配$result.如果你打印$results然后你会得到应得的输出。

您还可以将结果附加到结果上的 $results变量中concating例如

while ($row = mysql_fetch_array($result)) {
    $results .= $row['offer_no'] . "     " .$row['day']. "     " .$row['time'];
}
echo $results;

并尽量避免mysql_*声明,因为整个ext/mysql PHP扩展提供了所有以前缀命名的函数mysql_*,从 开始正式弃用,并将在未来PHP v5.5.0被删除。

您可以更好地使用其他两个MySQL扩展:MySQLiPDO_MySQL,其中任何一个都可以用来代替ext/mysql.

于 2013-09-04T05:33:11.697 回答