【发布时间】:2017-03-22 20:30:38
【问题描述】:
有一个 php 对象数组,每个对象都有一些来自同一组键的值。有一个 mysql 数据库,其中字段与每个对象中的键集匹配。想要使用 pdo 和循环将数组中每个对象的值写入 mysql。任何建议都会很棒!
PHP:(启动一些变量),3 个数组,其中数据转换为对象,放入代表会话变量的“$_STORAGE”数组中:
<?php
$Q = $A1 = $A2 = $A3 = $A4 = $A5 = $A6 = "";
$array1 = array(
"Q" => "q1",
"A1" => "a",
"A3" => "c",
"A6" => "f"
);
$array2 = array(
"Q" => "q2",
"A4" => "j",
"A5" => "k",
);
$array3 = array(
"Q" => "q3",
"A1" => "m",
"A2" => "n",
"A3" => "o",
"A4" => "p",
"A5" => "q",
"A6" => "r"
);
$_POST1 = (object) $array1;
$_POST2 = (object) $array2;
$_POST3 = (object) $array3;
$_STORAGE = [];
$_STORAGE['answers'][0] = $_POST1;
$_STORAGE['answers'][1] = $_POST2;
$_STORAGE['answers'][2] = $_POST3;
?>
这是写入数据库(data_base)的MySql表(data_table)。字段与对象键相同:
CREATE TABLE data_base.data_table
(ID INT NOT NULL AUTO_INCREMENT, Q VARCHAR(20), A1 VARCHAR(20), A2
VARCHAR(20), A3 VARCHAR(20), A4 VARCHAR(20), A5 VARCHAR(20),
A6 VARCHAR(20), Date TIMESTAMP , PRIMARY KEY (ID));
这是将一个对象写入数据库的 pdo 代码(没有异常处理):
<?php
//connect to database
include "connection_info_data_base.php";
// sql query insert into data_table
$sql = "INSERT INTO `data_table` (`Q`,`A1`,`A2`,`A3`,`A4`,`A5`,`A6`,) VALUES(:Q,
:A1, :A2, :A3, :A4, :A5, :A6)";
$stmt = $db->prepare($sql);
$stmt->bindParam(':Q', $Q);
$stmt->bindParam(':A1', $A1);
$stmt->bindParam(':A2', $A2);
$stmt->bindParam(':A3', $A3);
$stmt->bindParam(':A4', $A4);
$stmt->bindParam(':A5', $A5);
$stmt->bindParam(':A6', $A6);
//insert $sql query to server
$stmt->execute();
?>
如何编写一个循环,将 $_STORAGE["answers"][0] 中的值分配给变量 $Q、$A1、$A2、$A3、$A4、$A5、$A6,并使用 ""如果对象中没有该键的值,则作为值,然后运行 pdo 代码,将值插入数据库的第 1 行,再次开始循环,从 $_STORAGE["answers"][1] 重写变量值,覆盖所有值并再次运行 pdo 代码以编写 数据库中的第 2 行,然后是第 3 行?
【问题讨论】:
标签: php mysql arrays database pdo