【发布时间】:2013-07-26 16:16:16
【问题描述】:
我有一个检索多行数据的表单,每个项目都有一个文本区域供用户评论特定项目。返回的项目数量是可变的,它们不必将 cmets 留在任何/所有框中。
<textarea name="comment[]" cols="25" rows="2"><?php echo $f2; ?></textarea>
<input name="tableid[]" type="hidden" value="<?php echo $f1; ?>">
echo 语句使用当前存储在数据库中的任何内容填充文本区域,因为用户可以修改其他人输入的内容。
当 this 被传递到表单处理页面时,它会返回 this..
Submit: Submit
comment: Test Comment 1,Test Comment 2
tableid: 590,591
所以它似乎正确地传递了数组。我正在使用此代码来更新数据库
$conn = new PDO("mysql:host=xxxx;dbname=xxxxx",$username,$password);
$i = 0;
if(isset($_POST['submit'])) {
foreach($_POST['comment'] as $comment) {
$comment = $_POST['comment'][$i];
$id = $_POST['tableid'][$i];
$stmt = $conn->prepare("UPDATE reservations SET comment=:comment WHERE tableid=:id");
$stmt->bindValue(':comment', $comment, PDO::PARAM_INT);
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$i++;
}
}
但是,这似乎根本没有更新,我哪里出错了?
非常感谢
【问题讨论】:
-
PDO::PARAM_INT 的评论?
-
您可以更有效地执行循环,但这个
PDO::PARAM_STR可能是您打算用于评论的常量 -
你可以去掉这行
$comment = $_POST['comment'][$i]; -
foreach 循环的第一行,它使用 $comment 作为其索引,您更改 $comment。为什么?你需要 $i 做什么?
-
@TravelingTechGuy 其为
$_POST['tableid'][$i];