哪一个对我来说更好?
While循环:
function search_hotel($searchterm)
{
$query = $this->db->order_by("id", "desc")->like('name', $searchterm)->get('hotel_submits');
$data = array();
while($row = mysql_fetch_array($query))
{
$data[] = $row->name;
}
return $data;
}
Foreach循环:
function search_hotel($searchterm)
{
$query = $this->db->order_by("id", "desc")->like('name', $searchterm)->get('hotel_submits');
$data = array();
foreach ($query->result() as $row)
{
$data[] = $row->name;
}
return $data;
//return mysql_query("select * from hotel_submits where name LIKE '".$searchterm."'");
}
while
在技术上比foreach
更有效,但不值得比较:在这种情况下,它们都几乎相同。
在您的示例中,查询返回的结果是数组。这意味着您可以使用foreach语句或while语句。
请注意,foreach语句针对数组(PHP5中也包括对象)进行了优化,并且比while语句更快。虽然可以使用来达到相同的效果,但如果您想遍历数组的所有元素,则的效率不如
当使用框架及其自定义DB适配器类时,在脚本中间切换回PHP的内置函数似乎毫无意义。即使CI的适配器和PHP的mysql_*
函数可能使用相同的DBMS连接库(mysql)。
我强烈建议坚持Code Igniter的版本(foreach ($query->result() as $row)
)。从性能的角度来看,不应该有任何明显的差异。关于应用程序体系结构,不混合访问接口当然要干净得多。
看起来你混淆了mysqli和mysql的语法。这两个库在内部不兼容。您不能在一个语句中使用句柄/语句,而在另一个语句中使用它。这两个库与数据库保持完全独立的连接。
这意味着第一个将更快,因为mysql_fetch_array()将失败,内部循环将永远不会运行。但是更快并不意味着"正确"。