0

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

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

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

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

4

1 回答 1

2

这是你如何做到的:

$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();
于 2013-09-02T17:29:11.583 回答