【发布时间】:2013-06-20 15:20:52
【问题描述】:
我有一个 $_POST 数组,目前采用以下形式:
["Area"]=> array(2) {
[0]=> string(5) "Title"
[1]=> string(5) "Title"
}
["Issue"]=> array(2) {
[0]=> string(3) "111"
[1]=> string(7) "2222222"
}
["Elevation"]=> array(2) {
[0]=> string(8) "11111111"
[1]=> string(7) "2222222"
}
["Fix"]=> array(2) {
[0]=> string(8) "11111111"
[1]=> string(6) "222222"
}
["ExpectFee"]=> array(2) {
[0]=> string(8) "11111111"
[1]=> string(5) "22222"
}
["Outlay"]=> array(2) {
[0]=> string(9) "111111111"
[1]=> string(9) "222222222"
}
["ExpctTime"]=> array(2) {
[0]=> string(9) "111111111"
[1]=> string(11) "22222222222"
}
["Checkbox"]=> array(2) {
[0]=> string(12) "111111111111"
[1]=> string(11) "22222222222"
}
我目前正在这样循环...
if ($_POST['OthProb']['Issue'] != '') {
$table = 'tbl_customproblems';
$kv = array();
foreach ($_POST['OthProb'] as $array) {
foreach ($array as $value) {
$kv[] = "'".$value."'";
}
$string = "INSERT INTO $table (AccountID, myID, Area, Issue, Elevation, Fix, ExpectFee, Outlay, ExpctTime, Checkbox) VALUES ('$_POST[AccountID]', '$_POST[myID]', ".join(", ", $kv).")";
}
} else {
$string = $_SERVER['QUERY_STRING'];
}
$sql = $DBH->prepare($string);
$sql->execute();
这几乎可以工作!它产生了这个......
"INSERT INTO tbl_customproblems (AccountID, PropertyID, Area, Issue, Elevation, Fix, ExpectFee, Outlay, ExpctTime, WHCheckbox) VALUES ('81', '81', 'Title', 'Title', '111', '2222222', '11111111', '2222222', '11111111', '222222', '11111111', '22222', '111111111', '222222222', '111111111', '22222222222', '111111111111', '22222222222')"
如何修改循环以生成单独的插入,每行一个插入。
【问题讨论】:
-
你误用了
prepare()。$_POST值应该进入execute()。$_SERVER['QUERY_STRING']怎么了?这不是 SQL 查询 :) -
认为我是完全自学的。你能否提供一个链接来澄清一下,因为我不知道你刚刚说了什么。
-
看看
PDO:prepare()docs的例子 -
我不得不承认,我试图复制和修改一些我已经准备好的东西,并为不同类型的数组正常工作。只编程了几个月,完全是自学成才,在我掌握所有内容之前还有一段路要走。
-
我肯定得到了预期值,我只是不知道我在用它们做什么:P,'OthProb' 就像一个包含大量文件夹(列名)及其关联文件(值)。我传递了很多东西,所以我这样做了,因为我可以使用盒子名称对其内容执行操作。