2013-06-19 44 views
0

当我在phpMyAdmin中运行此查询时,它会加载所有行。 但是,当我通过PHP SQL运行它时,我只得到第一行。 我不知道我在这里做错了什么,我真的很紧张。phpMyAdmin中返回的所有行,但PHP中只有1行

这里是我的代码:

function getRows($user) 
{ 
    $q = mysql_query("SELECT day(closed) AS day, COUNT(closed) AS c FROM ost_ticket WHERE year(closed) = '2013' AND monthname(closed) = 'January' AND source = '{$user}' GROUP BY day LIMIT 30"); 
    $count = mysql_num_rows($q); 
    return $count; 
} 
function test11($user) 
{ 
    $q = mysql_query("SELECT * FROM ost_ticket WHERE closed LIKE '%2013-06- 19%' AND source = '" . $user. "'"); 
     if(!$q) 
    { 
     echo mysql_error(); 
    } 
$r = 0; 
$a = mysql_num_rows($q); 
echo $a; 
while($row = mysql_fetch_assoc($q)) 
{ 
return $row['status']; 
return $row['day']; 
$r++; 
} 
} 
function getUser() 
{ 
    $q = mysql_query("SELECT * FROM ost_staff WHERE staff_id > 2"); 
    while($row = mysql_fetch_assoc($q)) 
    { 
      $count1 = getRows($row['username']); 
      $a = 0; 
     echo '<div id="' . $row['username'] . '" class="stat"> 
     <span class="title">' . $row['username'] . '</span><br /><br /> 
     <div id="break"></div>'; 
     echo ' 
     <div id="data-' . $row['username'] .'">' . test11($row['username']) . '</div>'; 
    echo '</div>'; 
    } 
} 

Thanks in advance for this. 
+1

_Which_查询?你有三个。 –

+2

啊,我打赌的第二个,'test11()'。因为你在第一次循环迭代时从函数返回。 –

+1

你正在使用return,而这正是你只获得行的原因。 –

回答

2

的函数退出第一个到达return语句。

所以,你的函数只返回一个$row['status'];。您应该将查询结果放入一个数组中并将其返回。

1

您在while循环中使用return循环 - 您的代码在遇到第一个return时退出该功能。这可能是它不起作用的原因。

0

这里:

while($row = mysql_fetch_assoc($q)) 
{ 
    return $row['status']; //Returns in only this value 
    return $row['day']; 
    $r++; 
} 

修复:

$a = array() 
while($row = mysql_fetch_assoc($q)) 
{ 
    $a['status'][] = $row['status']; 
    $a['day'][] = $row['day']; 
    //$r++; 
} 
return $a; //This will return an array with all the rows fetched. 
+0

$是一个多维数组吗? –

+0

是的。 @Vivek –

+0

嗯,里面的两条线似乎很奇怪。我的意思是在PHP中,数组的功能与C,C++等传统语言完全不同。 –