【问题标题】:codeigniter - simple database insert failing without errorscodeigniter - 简单的数据库插入失败且没有错误
【发布时间】:2013-01-30 11:35:43
【问题描述】:

我正在运行一个 codeigniter 应用程序,但我无法让这个简单的插入正常工作。

if(!$this->db->insert('myTable',$entry)){
    $p3 = 0;
}else{
    echo $this->db->last_query();
    var_dump($this->db->_error_message());
}

“else”子句中的调试总是向我显示一个空字符串作为错误消息,如果我在 phpmyadmin 中测试 last_query,插入工作正常。

但是当我正常运行应用程序时插入没有发生,即使启动了“else”,也意味着请求成功。

有什么线索吗?

更新:$entry 数组示例:

$entry = array(
    'id' => '',
    'id_devis' => $current[0]->id,
    'metier' => $_POST[$i+1 . '_create_metier'],
    'days' => $_POST[$i+1 . '_create_daycount'],
    'price' => $_POST[$i+1 . '_create_price'],
    'cr_date' => date('Y-m-d H:i:s'),
    'user' => ''
);

$current 是另一个表的提取(使用 $this->db->get),所有数据都很好,因为我可以通过 last_query() 的 echo 插入它们

【问题讨论】:

  • 您能否在执行查询之前在您的应用中打印 $entry 数组并将其发布到此处?
  • }else{之前插入echo $this->db->last_query();,看看插入时会出现什么输出,当静默插入失败时可能会出现一些奇怪的情况,因为MySQL驱动程序没有明显的错误。
  • id 是表的主键。我只是试图将回声放在“if”语句中,只有“else”在运行

标签: php database codeigniter


【解决方案1】:

error_reporting(E_ALL);
ini_set('display_errors', '1');

在插入的行之前。您应该会看到一条错误消息。

我的猜测是您尝试为 id 插入非法值。可能的原因: - 它不应该是空的。 - 它不能是字符串(即如果类型是整数)

大多数情况下,数据库中的 id 是 int 类型,并且是一个自增字段。如果是这样,您不应该尝试插入 id。它将为您创建。

【讨论】:

  • 启用错误报告后,我仍然没有收到错误消息。我从数组中删除了 'id' 字段,因为它似乎没用,并且 last_query 返回的查询仍然有效。您对 auto_increment int 字段是正确的,但是这些点都没有导致错误,这就是为什么我不明白 - 我的 php 日志是干净的,并且 last_query 返回的查询在 phpmyadmin 中工作正常,所以从逻辑上讲它不是php错误,也不是mysql错误。奇怪!
【解决方案2】:

刚刚发现问题,没有。一个脚本正在删除我刚刚在代码中进一步插入的行,插入成功。谢谢大家的回答

【讨论】:

  • 天哪!谢谢你!这也正是发生在我身上的事情!花了 2 小时调试,幸运地看到了这条评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
相关资源
最近更新 更多