【问题标题】:General error: 1366 Incorrect integer value ( QUERY EXEPTION )一般错误:1366 整数值不正确(查询异常)
【发布时间】:2019-04-08 12:22:31
【问题描述】:

我正在尝试从表单中向数据库中添加一些数据,但出现异常:

SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '[{"ID_ARTICLE":58}]' for column 'ID_ARTICLE' at row 1 (SQL: insert into `annonce` (`TITRE_ANNONCE`, `TYPE_ANNONCE`, `PRIX`, `ID_ARTICLE`) values (titre, 1, 100, [{"ID_ARTICLE":58}]))

这意味着我无法插入整数 ID_ARTICLE 这是我的查询:

公共函数存储(请求 $request) { $annonce = 新的公告;

    $IDARTICLE = DB::table('article')
        ->select('ID_ARTICLE')
        ->where('NOM_ARTICLE', $request->NOM_ARTICLE)
        ->get();


    $annonce->TITRE_ANNONCE = $request->TITRE_ANNONCE;
    $annonce->TYPE_ANNONCE = $request->TYPE_ANNONCE;
    $annonce->PRIX = $request->PRIX;
    $annonce->ID_ARTICLE = $IDARTICLE;
    $annonce->save();

    return ($annonce);
}

我尝试替换

$annonce->ID_ARTICLE = $IDARTICLE;  

  $annonce->ID_ARTICLE = $IDARTICLE->ID_ARTICLE; 

从列表中检索整数值但显示另一个错误:此集合实例上不存在属性 [ID_ARTICLE]。

当它存在时,我们可以看到 任何帮助将不胜感激

【问题讨论】:

  • 将 ->get() 更改为 ->first() 因为 $IDARTICLE 返回多个结果。你需要一个。
  • 我做了,但它显示另一个错误:stdClass 类的对象无法转换为字符串

标签: php mysql database laravel


【解决方案1】:

您的变量$IDARTICLE 包含多个结果集。您必须像这样获取特定记录的 id 并插入到另一个表中。

 $IDARTICLE = DB::table('article')
        ->select('ID_ARTICLE')
        ->where('NOM_ARTICLE', $request->NOM_ARTICLE)
        ->first();


    $annonce->TITRE_ANNONCE = $request->TITRE_ANNONCE;
    $annonce->TYPE_ANNONCE = $request->TYPE_ANNONCE;
    $annonce->PRIX = $request->PRIX;
    $annonce->ID_ARTICLE = $IDARTICLE->ID_ARTICLE;
$annonce->save();

return ($annonce);

【讨论】:

  • 它不起作用:stdClass 类的对象无法转换为字符串
  • 你把方法get()改成first()了吗?
  • 嘿,我用方法 first() 替换了 get() 然后用 $IDARTICLE->ID_ARTICLE 替换了 $IDARTICLE;
  • 答案已修改。只需将$IDARTICLE->id 替换为$IDARTICLE->ID_ARTICLE
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-03
相关资源
最近更新 更多