【发布时间】:2014-03-11 04:18:23
【问题描述】:
也许你们中的一个可以在这里快速启动我......
我尝试使用准备好的语句将表单值存储在带有 php.ini 的 mySQL 数据库中。我已经启动并运行了$stmt1 来存储我的助手的信息。
现在我想存储其他信息,例如帮助者能够提供帮助的日子。我的理解是,我只准备了一次 $stmt2,然后使用 for 循环查找参数值并执行该语句几次。
准备声明:
$stmt2 = $dbh->prepare('INSERT INTO '.$tbl_pre . $tbl_event .'
(helper_ID,
day_date,
needCabin)
VALUES
(:helper_ID,
:day_date,
:needCabin)');
$stmt2->bindParam(':helper_ID', $helperID);
$stmt2->bindParam(':day_date', $day_date);
$stmt2->bindParam(':needCabin', $night_ID);
然后只获取最后一个插入语句的 ID,因为它对于所有即将到来的插入都是相同的。
$helperID = $dbh->lastInsertId('ID');
现在从 for 循环开始:
for ($i = 0; $i < 3; $i++) {
$insert = false;
$night_ID = 0;
$day_date = 0;
if ($night[$i] != null) {
$night_ID = 1;
$day_date = $night[$i];
$insert = true;
} elseif ($day[$i] != null){
$day_date = $day[$i];
$night_ID = 0;
$insert = true;
}
if ($insert) {
$stmt2->execute();
}
}
}
但它只是在第一次迭代后停止。如果我取消执行语句,它会在所有三个迭代中运行。
我错过了什么?
【问题讨论】:
-
@Dave 所以我需要使用没有显式参数的准备好的语句?
标签: php mysql sql prepared-statement