我有两个表,一个是订单,第二个是项目和一个公共列order_no所以我使用内部联接查询在order_no的基础上获取数据,但只提取了最后一个匹配的记录,所以任何人都可以告诉我是什么是我的查询中的问题。
$q="SELECT * FROM `items` INNER JOIN `order` ON items.order_no=order.order_no";
$result1= mysql_query($q,$this->_current_connection);
if(mysql_num_rows($result1)>0){
while($row=mysql_fetch_object($result1))
{
$arr=$row;
}
答案 0 :(得分:3)
每次在循环中都会覆盖变量&因此,您只获得最后一条记录,所以只需更改,
$arr=$row;
到
$arr[]=$row;
答案 1 :(得分:0)
在迭代中将数组设置为当前$row
。试试这个:
$arr = array();
while(...)
{
array_push($arr, $row);
}
然后你可以这样迭代你的数组:
foreach($arr as $item)
{
...
}
答案 2 :(得分:-1)
你需要将$ arr作为数组而不仅仅是简单的变量。试试这个,
$q="SELECT * FROM `items` INNER JOIN `order` ON items.order_no=order.order_no";
$result1= mysql_query($q,$this->_current_connection);
$arr = array();
if(mysql_num_rows($result1)>0){
while($row=mysql_fetch_object($result1))
{
$arr[]=$row;
}
print_r($arr);
答案 3 :(得分:-1)
您必须将结果存储在array中。您可以使用
$arr[]=$row;
而不是
$arr=$row;