php - ajax 动态对象(类似关联数组)通过 PDO 转换为两个 MySQL 表

标签 php mysql pdo

我有一个 js 动态对象,通过 JSON.stringify(obj_to_str); “字符串化”;

我能够在 super 全局 $_POST 下的 php 文件中接收此对象。对象的格式(一旦进入 $_POST super 全局)如下所示: {"6869lx":"mds","2416ex":"mdr","5126mv":"mdf","7079px":"dtr","5350ds":"dts"}。 我希望能够将每个键值对插入到不同的列中 - 例如:6869lx 插入名为“key”的列,并在同一行上名为“cat”的不同列上,mds。

我遇到的问题是准备一个动态PDO语句来将此js对象插入到两个不同的MySQL列中(考虑到我事先不知道对象的长度)。我还读到,如果对象非常大,for 循环(或任何类型的 php 循环)会减慢插入过程。

这可能吗? 最好的方法是什么? 非常感谢。

最佳答案

具体操作方法如下:

$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();
}

要进行多行插入,您可以执行以下操作:

$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();

关于php - ajax 动态对象(类似关联数组)通过 PDO 转换为两个 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18577655/

相关文章:

php - 你有没有在 web 开发中达到 php 的实际限制?

mysql - 使用 MySQL 查询获取 ip 地址

mysql - 数据库设计 : Managing old and new data in database table

mysql - 如何从MySQL时间戳中删除小数值

php - 将 PHP PDO 迁移到 Laravel PDO 导致 Invalid parameter number

php - 如何更好地优化具有特定搜索条件的MySQL SELECT语句?

Javascript 事件监听器触发 php 代码,反之亦然?

java - 将参数从 HTML 发送到 Java Applet

php - pdo 直接将图像插入数据库 - 总是插入 BLOB - 0B

php - PHP 多表