doujiao1949 2013-09-02 16:44
浏览 44
已采纳

ajax动态对象(关联数组)通过PDO分成两个MySQL表

I have a js dynamic object that I "stringified" via JSON.stringify(obj_to_str);

I'm able to receive this object in a php file under the super-global $_POST. The object's format (once in the $_POST super-global) looks like this: {"6869lx":"mds","2416ex":"mdr","5126mv":"mdf","7079px":"dtr","5350ds":"dts"}. I'd like to be able to insert each key-value pare into a different column -for instance: 6869lx into a column called 'key', and on the same row on a different column called 'cat', mds.

The problem I'm having is to prepare a dynamic PDO statement to insert this js object into two different MySQL columns (considering the fact that I do not know the length of the object before-hand). I also read that if the object is very large a for loop (or any type of php loop) would slow down the insertion process.

Is it possible ? What would be the best way of doing it? Thanks much in advance.

  • 写回答

1条回答 默认 最新

  • duanmao9918 2013-09-02 17:29
    关注

    Here's how you do it:

    $data = json_decode($_POST['data'], true);
    $stmt = $pdo->prepare("INSERT INTO yourtable (key, cat) VALUES (:key, :cat)");
    $stmt->bindParam(':key', $key);
    $stmt->bindParam(':cat', $cat);
    foreach ($data as $key => $cat) {
        $stmt->execute();
    }
    

    To do a multi-row insert, you can do:

    $data = json_decode($_POST['data'], true);
    $values = implode(', ', array_fill(0, count($data), '(?, ?)'));
    $stmt = $pdo->prepare("INSERT INTO yourtable (key, cat) VALUES " . $values);
    $i = 1;
    foreach ($data as $key => $cat) {
        $stmt->bindValue($i++, $key);
        $stmt->bindValue($i++, $cat);
    }
    $stmt->execute();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。