dongna9185 2015-09-23 14:28
浏览 77
已采纳

MySQL Single插入来自post数据阵列的多行

I have search but dont see any answer or example that fits mine code. I am pretty new to MySQL/PHP, so I might not understand the answers I have looked at. I have a web page that posts data over that I want to use just one insert. This is what I have so far for the insert:

    $statement1 = $link->prepare("INSERT INTO collection_items(collection_list_id, collection_item_number, username_id, collection_item_title, collection_item_text, created_date)
   VALUES(:collection_list_id, :collection_item_number,  :username_id, :collection_item_title, :collection_item_text, now())");
$statement1->execute(array(
   "collection_list_id" => $last_id,
    "collection_item_number" => "1",
    "username_id" => $user_number,
    "collection_item_title" => $collection_item_title_1,
    "collection_item_text" => $collection_item_text_1
),
(
   "collection_list_id" => $last_id,
    "collection_item_number" => "2",
    "username_id" => $user_number,
    "collection_item_title" => $collection_item_title_2,
    "collection_item_text" => $collection_item_text_2
));

If I drop the last set of data it works just fine for one row. I have about 20 twenty rows of data from the page post. TIA

This is what I have, but can't get it to work. I'v shown more code to help.

$form = $_POST;
$collection_item_title_1 = $form[ 'number1' ];
$collection_item_text_1 = $form[ 'comment1' ];
$collection_item_title_2 = $form[ 'number2' ];
$collection_item_text_2 = $form[ 'comment2' ];

$last_id = $link->lastInsertId();
$q= $link->query("SELECT id FROM sitelok WHERE Username='$slusername'");
$user_number = $q->fetchColumn();

$collection_item_titles = array($collection_item_title_1, $collection_item_text_1, $collection_item_title_2, $collection_item_text_2);

$statement1 = $link->prepare("INSERT INTO collection_items(collection_list_id, collection_item_number, username_id, collection_item_title, collection_item_text, created_date)
   VALUES(:collection_list_id, :collection_item_number,  :username_id, :collection_item_title, :collection_item_text, now())");
    for ($i = 0; $i < size($collection_item_titles); $i++)
    $statement1->execute(array(
   "collection_list_id" => $last_id,
    "collection_item_number" => "$i",
    "username_id" => $user_number,
    "collection_item_title" => $collection_item_title[$i],
    "collection_item_text" => $collection_item_text[$i]
));
  • 写回答

2条回答 默认 最新

  • duanfei1930 2015-09-23 14:38
    关注

    You could create an array and loop through the data and instead of having your data in separate variables ($collection_item_title_1, $collection_item_title_2) you could do something such as $collection_item_titles[] then loop through as such:

        statement1 = $link->prepare("INSERT INTO collection_items(collection_list_id, collection_item_number, username_id, collection_item_title, collection_item_text, created_date)
       VALUES(:collection_list_id, :collection_item_number,  :username_id, :collection_item_title, :collection_item_text, now())");
        for ($i = 0; $i < size($collection_item_titles); $i++)
        $statement1->execute(array(
       "collection_list_id" => $last_id,
        "collection_item_number" => "$i",
        "username_id" => $user_number,
        "collection_item_title" => $collection_item_title[$i],
        "collection_item_text" => $collection_item_text[$i]
    );
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
  • ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
  • ¥15 io.jsonwebtoken.security.Keys
  • ¥15 急,ubuntu安装后no caching mode page found等
  • ¥15 联想交换机NE2580O/NE1064TO安装SONIC