嘿,伙计们,我很难用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 MWF 7:00-8:00
预期输出:
1001 MWF 7:00-8:00,1002 MWF 8:00-9:00
您需要使用串联或数组,因为$results
将在每个循环中重置,并最终获得最后一个结果:
阵列:
$results[] =$row['offer_no'] . " " .$row['day']. " " .$row['time'];
或者:
$results .=$row['offer_no'] . " " .$row['day']. " " .$row['time'];
请注意:mysql_*函数已弃用,您可以切换到mysqli和PDO,并使用参数化查询来防止SQL注入攻击。
试试这个
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;
您必须将每一行附加到一个变量中,目前,您正在重写该值,只留下最后一个值。试试这个:
//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;
注意.=
,这是字符串与变量串联的简写。
它总是分配新的变量try this one
$results =$results.",".$row['offer_no'] . " " .$row['day']. " " .$row['time'];
如果不起作用,请告诉我。
尝试使用$results
作为类似于array
的
while ($row = mysql_fetch_array($result)) {
$results[] = $row['offer_no'] . " " .$row['day']. " " .$row['time'];
}
每次都要将值附加到一个变量中。因此,它将为结果保留mysql_fetch_array
数组中的最后一个元素。但你需要将它们分配给一个数组,然后它会以数组$result
的形式维护这些数组元素的分配。如果你打印$results
,那么你会得到取消服务器的输出。
您还可以将结果附加到concating
上的$results变量中,结果类似
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
扩展可以更好地使用:MySQLi
和PDO_MySQL
,它们中的任何一个都可以用来代替ext/mysql
。