【问题标题】:Why do I have this ERROR: syntax error at or near "Array" LINE 2: VALUES Array?为什么我会出现此错误:“数组”第 2 行或附近的语法错误:值数组?
【发布时间】:2020-06-30 21:42:30
【问题描述】:

我一直在关注此线程上给出的示例

Why is insert not working and not outputting any error on postresql?

当我尝试在数据库中使用此选项插入多个值时;我遇到了这个错误“错误:在“数组”第 2 行或附近出现语法错误:值数组..”可以帮忙吗?下面是代码:

       …….

       "INSERT INTO people( mom, non, ooo)
      VALUES 
    ($1,   $2,  $3), 
   ($4,   $5,  $6),
   ($7,   $8,  $9),
   ($10, $11, $12)

  ON CONFLICT (mom) DO NOTHING";

   $rcon = pg_query_params($connection, $ins, 
   Array(
   [ $mom ,$non,  $kooo],
   [ $mom 1,$non1,  $kooo1],
   [ $mom 2,$non2,  $kooo2],
   [ $mom 3,$non3,  $kooo3]
       )
   );

   if(!$rcon){
   echo pg_last_error($connection);
       }else{
            echo "Record added to database</br>"; //success confirmation
      }


  This gives this error;  ERROR: bind message supplies 4 parameters, but prepared statement "" requires 12 

【问题讨论】:

    标签: php postgresql sql-insert


    【解决方案1】:

    您正在为参数绑定提供一组数组。试试这个:

        $rcon = pg_query_params($connection, $ins, 
            [
                $mom,  $non,   $kooo,
                $mom1, $non1,  $kooo1,
                $mom2, $non2,  $kooo2,
                $mom3, $non3,  $kooo3,
            ]
        );
    

    【讨论】:

      【解决方案2】:

      我看不出数组与您的问题有什么关系。大概,您想插入多行。那将是:

      INSERT INTO people( mom, non, ooo)
      VALUES 
          ($1,   $2,  $3), 
          ($4,   $5,  $6),
          ($7,   $8,  $9),
          ($10, $11, $12)
      ON CONFLICT (mom) DO NOTHING
      

      【讨论】:

      • 我这样做了,结果显示:错误:绑定消息提供 4 个参数,但准备好的语句“”需要 12 个
      • @Vvictory 在这里回答您的问题,您传递的数组是一个数组数组。去掉Array 中的方括号([]),它应该可以工作。但即使这对你有用,你也做错了。
      • @MikeOrganek 你能建议一个更好的方法吗?...因为它一直显示绑定消息提供错误。
      • @Vvictory 请使用您的代码更新和错误消息编辑您的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2016-07-10
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      相关资源
      最近更新 更多