2012-08-09 59 views
0

我有这样的功能:转换PHP的MySQL结果到一个数组

public function get_all_sites($niche){ 
    $query="SELECT * 
      FROM sites AS site 
      INNER JOIN niche AS n ON n.niche_id=site.niche_id 
      INNER JOIN review AS r ON r.site_id=site.site_id 
      WHERE n.niche_id=".$niche; 
    $results=mysql_query($query) or die(mysql_error()); 

    while($rows[] = mysql_fetch_assoc($results)); 

    return $rows; 
} 

我想要做的是所有行转换为关联数组中一气呵成,并将其返回。由于返回的值很多,我不想使用任何推式函数或编写这样的代码:$ new_array ['id'] = $ row ['id'] ;.较短的代码更好。

好的,连接错误消失了。我怎样才能输出获得的所有行作为一个数组出mysql_fetch_assoc没有从循环中获取的结果

+0

**'mysql' **'_query' vs **'mysqli' **'_fetch_assoc'。两种不同的扩展。我建议完全切换到mysqli或PDO,并单独离开旧的'mysql_ *'函数。 – DCoder 2012-08-09 07:30:28

+0

好吧,我赶紧完成这个网站..所以我会坚持mysql – 2012-08-09 07:32:54

+2

请不要使用'mysql_ *'功能的新代码。他们不再被维护,社区已经开始[弃用流程](http://goo.gl/KJveJ)。请参阅[**红框**](http://goo.gl/GPmFd)?相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你关心学习,[这是一本很好的PDO教程](http://goo.gl/vFWnC)。 – PeeHaa 2012-08-09 07:37:29

回答

0

错误:

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, 
resource given in C:\Program Files (x86)\Zend\Apache2\htdocs\bestMatch 
\sandbox\models\SitesDB.php on line 19 

意味着有什么不对您的SQL或服务器ISN”能够执行它。我建议你回应一下,并确保查询可以提供结果。

在这种情况下,你似乎在混合mysql_和mysqli_函数?你是否让mysqli_连接能够返回关联的数组?

编辑:

基于此评论“好了,我急于完成这个site..so我会坚持到mysql”,尝试添加到您的功能有关联吗?看看example 1,并确保你有步骤覆盖。

+0

回应什么?,,,,,,,,,,,,,,,,,,,,看到更新 – 2012-08-09 07:31:13

+0

@DmitryMakovetskiyd通常,如果我确定我的连接是好的,我会回声SQL,看看哪里在这种情况下,错误是,似乎你试图错误地使用两组函数。 'mysql_ *'和'mysqli_ *'不要混合。 – Fluffeh 2012-08-09 07:33:25

+0

我注意到..我的错..见更新 – 2012-08-09 07:35:34