INSERT INTO `ppt_data`
VALUES ('1', '', '0', '', '0'
, '0', '', '0', '1', ''
, 'array (
  0 => 
  array (
    ''url'' => ''19/07/03_eilexfc5ipg1.png'',
    ''alt'' => ''蓝色清新初夏手绘夏季旅游'',
  ),
  0 => 
  array (
    ''url'' => ''19/07/03_keww5mdd4z02.png'',
    ''alt'' => ''蓝色清新初夏手绘夏季旅游'',
  ),
  0 => 
  array (
    ''url'' => ''19/07/03_v3ewzkizgpd7.png'',
    ''alt'' => ''蓝色清新初夏手绘夏季旅游'',
  ),
)', '', 'array(0=>array(''fileurl''=>''这里是外部地址'',''filename''=>''附件说明'',),)');各位大佬怎么写SQL替换语句递增这个 让0 => 1 => 2 => 这样递增 每条都是这样!

解决方案 »

  1.   

    你的意思是把你的这个数组的key转换为 0 => 1=> 2=> 吗? 也即是索引数组咯?你这个数组在插入sql之前 用 array_values 这个函数 处理一下 就是索引数组了 也就是你要的 0 => 1=> 2=>  格式如果你是一整个数组 然后分了 每次插入N个非固定数量 那么就用循环处理一下数组 然后拼接sql 的 value部分就行了如果每次插入sql的数组个数相同固定数量 可以用 array_splice这个函数分割建议:数组存储不要这种格式 可以存 json 或者 序列化 不过最好只存储你需要的信息
      

  2.   

    这个有点难度了。。 可能要写存储过程了 还是比较麻烦的 如果不写存储过程 需要把数据全拿出来 然后用php处理一下
    // 拿数据
    $res = $pdo->query('select id, field from table ');// 处理数据中的数组 递增  再重新插入 或 修改原数据
    $sql = 'update table set ';
    foreach($res as $key=>$item){
          $tmpArr = array_values($item['fileld']);
          $sql .= ' field = ' . (string)$tmpArr;
    }
    $ids = array_colume($res, 'id');
    $sql .= " where id IN ({$ids})"; //执行修改
    $res = $pdo->query($sql);
      

  3.   

    写错了 这样才对
    // 拿数据
    $res = $pdo->query('select id, field from table ');// 处理数据中的数组 递增  再重新插入 或 修改原数据
    foreach($res as $key=>$item){
          $tmpArr = array_values($item['fileld']);
          $sql = ' update table set field = ' . (string)$tmpArr . ' where id = ' . $item['id'];    //执行修改
        $res = $pdo->query($sql);
    }
    插入的是相同的 只是新增一个字段