PHP CodeIgniter框架 - Query Builder是否计为prepare()和bind_param()以及如何将表单发布数据存储到Query Builder数组中?

问题描述 投票:2回答:2

除了一些来源说查询生成器语句已经准备好了,而其他人说它们已经但没有约束,然后有些人说它们受到限制等等,我发现文档并没有太多文档。一个可靠的答案将非常受欢迎。

此外,如果我想将表单数据传递到我存储在数据库中的数组中,我应该如何修改以下代码?

$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);

谢谢。

php mysql codeigniter
2个回答
1
投票

几种方式

//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']);

希望我的回答能帮到你。


1
投票

答案在很大程度上取决于“准备”的含义。 “绑定”可以用非常类似于PDO的方式完成。但是,没有与PDOStatement::bindColumnPDOStatement::bindParamPDOStatement::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());
© www.soinside.com 2019 - 2024. All rights reserved.