1

第一次使用 CI,我被这个看似简单的问题搞砸了。我的查询不会插入记录。

为了调试可能的问题,插入代码已被简化,但我仍然没有得到任何乐趣。

本质上,我正在使用;

$data = array('post_post' => $this->input->post('ask_question'));
$this->db->insert('posts', $data); 

我没有收到任何错误(尽管这可能是由于另一个与 CI 相关的创伤而在 config/database.php 中禁用了它们:-$)

我用过

echo print $this->db->last_query();

获取生成的查询,如下图:

INSERT INTO `posts` (`post_post`) VALUES ('some text')

我已将此查询粘贴到 phpMyAdmin 中,它插入没有问题。我什$this->db->query()至尝试使用“手动”运行上面的输出查询,但同样,记录不会插入。

数据库表“posts”的方案只是两列,post_id 和 post_post。

请,任何关于这里发生的事情的指示将不胜感激......谢谢

4

2 回答 2

1

好的..解决了,在与 CI 搞砸之后。

通过将持久连接设置为 false 使其工作。

$db['default']['pconnect'] = FALSE;

于 2012-07-05T23:18:03.993 回答
0

事情通常看起来不错,你所说的一切都表明它应该工作。我的第一直觉是检查您插入的内容是否与您的 SQL 字段兼容。

只是一个很酷的 CI 功能;我建议你看看CI 数据库事务类。事务允许您将查询/查询包装在事务中,可以在失败时回滚,并且还可以使错误处理更容易:

    $this->db->trans_start();
    $this->db->query('INSERT INTO posts ...etc ');
    $this->db->trans_complete();

    if ($this->db->trans_status() === FALSE)
    {
        // generate an error... or use the log_message() function to log your error
    }

或者,您可以做的一件事是将您的 Insert SQL 语句放入 $this->db->查询(your_query_here),而不是调用 insert。有一个称为查询绑定的 CI 查询功能,它也会自动转义您传递的数据数组。

让我知道它是怎么回事,希望这会有所帮助!

于 2012-07-04T03:43:23.793 回答