此查询的更好解决方案


$query = $this->db->query("SELECT field_name FROM table_name;");
$getData= array();
foreach ($query->result() as $row) {
array_push($getData, $row->field_name);
}

我使用codeigniter,对于我需要管理的每个表,如果数据存在以进行更新或进行新插入,我使用此代码,所以我想看看是否有更多的选项可以不每次都复制代码。我只是一个学生,对不起我的英语

不清楚为什么要这样做,但我称之为"扁平化"数组。如果您发现需要经常这样做,那么创建一个"工作者"方法可能会有所帮助。

例如,在一个模型中,可能有两个方法都需要"平面"结果。

public function get_something()
{
$query = $this->db->query("SELECT field_name FROM table_name;");
//call the "worker"
return $this->make_flat($query);
}
public function get_something_else()
{
$query = $this->db->query("SELECT field_name FROM table_name;");
//call the "worker"
return $this->make_flat($query);
}

在模型的其他地方,上面使用的代码中使用了这个"worker"方法。

// The "worker" method to flatten the results
protected function make_flat($query)
{
$getData = []; //is same as $getData = array(); but with less typing
foreach ($query->result() as $row)
{
$getData[] = $row->field_name;
}
return $getData;
}

线$getData[] = $row->field_name;所做的事情与array_push($getData, $row->field_name);所做的完全相同。但实际上它要快一点。它也减少了打字。

http://php.net/manual/en/function.array-column.php应该能很好地做到这一点。

$query = $this->db->query("SELECT field_name FROM table_name;");
$array = array_column($query, 'field_name');
print_r($array);

你的问题似乎与你的代码相矛盾。如果你只是想看看一个特定的条目是否已经存在,你可以这样做:

$this->db->where('field_name', $var);
$exists = $this->db->count_all_results('table_name');
if ($exists > 0) {
// update
// there is an entry with $var for `field_name` in table `table_name`
} else {
// insert
}

相关内容

  • 没有找到相关文章

最新更新