为同一ID语法错误插入多个ROWS

时间:2014-03-23 23:03:05

标签: php sql

我想在我的sql数据库中插入很多行,但它给了我一个错误。我有3个字段(object_id,键,值),并且对于来自不同表的每个对象,我想以longtext格式存储其他值,并且没有自动增量sql server错误说我使用了错误的语法。我用'',``尝试了它,并且没有一切,但它不会工作我做错了什么?

  $ff = $db->last_inserted_id();

    $query2 = "INSERT INTO object_meta (`object_id`, `key`, `value`)
      VALUES ($ff, 'title', '$title'),
      VALUES ($ff, 'nice_url', '$nice_url'),
      VALUES ($ff, 'menu_title', '$menutitle'),
      VALUES ($ff, 'content', '$text'),
      VALUES ($ff, 'description', '$description'),
      VALUES ($ff, 'keywords', '$keywords'),
      VALUES ($ff, 'status', '$status'),
      VALUES ($ff, 'date', '$date')";

    $db->query($query2) or die(mysql_error());

3 个答案:

答案 0 :(得分:4)

即使您要插入多行,也只需要使用VALUES一次。

$query2 = "INSERT INTO object_meta (`object_id`, `key`, `value`)
  VALUES ($ff, 'title', '$title'),
         ($ff, 'nice_url', '$nice_url'),
         ($ff, 'menu_title', '$menutitle'),
         ($ff, 'content', '$text'),
         ($ff, 'description', '$description'),
         ($ff, 'keywords', '$keywords'),
         ($ff, 'status', '$status'),
         ($ff, 'date', '$date')";

我已经在Mac上运行PHP 5.3和PDO测试了这一点,连接到在Linux上运行的MySQL 5.6实例。我确认这有效。

答案 1 :(得分:0)

INSERT INTO 
    object_meta (`object_id`, `key`, `value`)
VALUES 
($ff, 'title', '$title'),
($ff, 'nice_url', '$nice_url'),
...

你不能重复价值

答案 2 :(得分:0)

尝试将其更改为:

  $ff = $db->last_inserted_id();

    $query2 = "INSERT INTO object_meta (`object_id`, `key`, `value`)
      VALUES ('$ff', 'title', '$title'),
      VALUES ('$ff', 'nice_url', '$nice_url'),
      VALUES ('$ff', 'menu_title', '$menutitle'),
      VALUES ('$ff', 'content', '$text'),
      VALUES ('$ff', 'description', '$description'),
      VALUES ('$ff', 'keywords', '$keywords'),
      VALUES ('$ff', 'status', '$status'),
      VALUES ('$ff', 'date', '$date')";

    $db->query($query2) or die(mysql_error());

(将''添加到$ ff)