我有一个js动态对象,我通过JSON.stringify(obj_to_str);
我能够在超全局$_POST
下的php文件中接收此对象。对象的格式(一次在$ _POST超全局中)如下所示:{"6869lx":"mds","2416ex":"mdr","5126mv":"mdf","7079px":"dtr","5350ds":"dts"}
。
我希望能够将每个键值pare插入到不同的列中 - 例如:6869lx到名为'key'的列中,并且在另一列上称为'cat',mds的同一行上。
我遇到的问题是准备一个动态PDO语句将这个js对象插入到两个不同的MySQL列中(考虑到事前我不知道对象的长度)。我还读到,如果对象非常大,for循环(或任何类型的php循环)会减慢插入过程。
有可能吗? 这样做的最佳方式是什么? 非常感谢。
答案 0 :(得分: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();