我有一个本土的LAMP应用程序,根据是否传递空白记录或非空白记录,使用相同的HTML代码进行“修改记录”和“新记录”页面。目前,我通过从MySQL表中选择一条记录并手动将每个字段(按名称)设置为NULL来创建空白记录。必须有一个更好的方法来做到这一点,但找到我需要的搜索条件太过于通用。我看过使用像mysql_fetch_array或get_class_vars这样的东西,但我无法让它们起作用。这就是我试图用一些手册来代替的东西:
// Select a row, any row... (using CodeIgniter)
$q = $this->db->get($this->config->item('db'),1);
// For each ... um ... one ... row, add it to $data
foreach ($q->result() as $row) {
$data[] = $row;
}
// set each **KNOWN** field to NULL
$data[0]->column1 = NULL;
$data[0]->column2 = NULL;
...
我知道这是一个肮脏的黑客,但它的确有效。这样做的“正确”方法是什么?
答案 0 :(得分:1)
我相信你正是这样做的:
$data[0] = (object) array_fill_keys($this->db->list_fields('your_table_name'), null);
答案 1 :(得分:0)
如果你只获得1行,你最好使用 - > row()方法而不是结果()&无用的foreach循环
例如:
$row = $this->db->select('*')->from('table')->get()->row();
立即解决您的问题,您必须定义您正在使用的字段
$fields = array('id', 'name', '...etc');
然后你会做这样的事情,如果不可用就变空了
foreach ( $fields as $f ) $data[$f] = isset($row->$f) ? $row->$f : NULL;
这将使您的$ data中的所有字段都可用,因此您可以将其传递给视图。