除了一些来源说查询生成器语句已经准备好了,而其他人说它们已经但没有约束,然后有些人说它们受到限制等等,我发现文档并没有太多文档。一个可靠的答案将非常受欢迎。
此外,如果我想将表单数据传递到我存储在数据库中的数组中,我应该如何修改以下代码?
$user_first = $this->input->post('user_first');
$data['user_first'] = $user_first;
//this above code works fine if I want to store each part of the form
//in the array individually
$data = array(
'user_first' => 'My title'
//How can I get 'user_first' to => $user_first?
);
$this->pdo->insert('users', $data);
谢谢。
几种方式
//adding name by name to an array
$data = array('user_first' => $this->input->post('user_first'));
adding the entire post array
//as u have the same "name" in the form than the array u are sending to the db insert method
$data = $this->input->post();
//in short $this->input->post() is $_POST array, but cleaned
//or getting the values from $_POST
$data = array('user_first' => $_POST['user_first']);
希望我的回答能帮到你。
答案在很大程度上取决于“准备”的含义。 “绑定”可以用非常类似于PDO的方式完成。但是,没有与PDOStatement::bindColumn
,PDOStatement::bindParam
或PDOStatement::bindValue
相对应的方法。
具有“约束力”的PDO::prepare()
最直接的等价如下
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
?
占位符将按照它们在数组中出现的顺序替换为数组中的值。输入值将被转义。 query()
方法不支持:name
的PDO sytax作为占位符。 (关于Query Binding的CI文档。)
通常,各种Query Builder方法结合起来可以实现与PDO::prepare()
和PDOStatement::execute()
相同的整体效果。
PDOStatement
方法检索查询数据的功能(例如execute(),fetch()等)是通过调用“Generating Query Results”的CI数据库方法完成的。
假设上面的示例中的三个输入已经通过这里发布,我将如何在表中插入它们
$data['id'] = $this->input->post('id');
$data['status'] = $this->input->post('status');
$data['author'] = $this->input->post('author');
$this->db-insert('some_table', $data);
如果元素名称与表列名称完全匹配,并且我们知道只会发布那些输入,则上面的内容可以简化为
$this->db-insert('some_table', $this->input->post());