【发布时间】:2012-07-27 20:35:32
【问题描述】:
所以我有这个基本的 html 表单。我的目标是将提交给此表单的值传递到 mysql 表中。
<form action="?action=settings" method="post">
<ul>
<li>
<label for="settingValue[1]">Setting 1:</label>
<input type="text" name="settingValue[1]" id="setting1" required />
</li>
<li>
<label for="settingValue[2]">Setting 2:</label><br>
<input checked type="radio" name="settingValue[2]" value="1" />On<br>
<input type="radio" name="settingValue[2]" value="0" />Off
</li>
<li>
<input type="submit" name="saveChanges" value="Save Changes" />
</li>
</ul>
</form>
我的 mysql 表只有 3 列(id、settingName、settingValue) 因此,我想通过将值存储到“settingValue”列中来使用此表单(在本例中为第 1 行和第 2 行)更新表中的多条记录。
经过一些研究,我发现最好的方法是发布一个数组(这是我在上面尝试做的),然后使用 foreach 循环遍历数组并更新表。
我想我的主要问题是弄清楚如何使用数组。因为我需要更新记录而不是创建新记录。我还需要保留 ID,以便更新相应的记录。
经过几个小时的谷歌搜索,我最好的猜测是这样做:
if ( isset( $_POST['saveChanges'])) {
foreach($_POST['settingValue'] as $key => $settingValue ) {
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$conn->exec("UPDATE settings SET settingValue=$settingValue WHERE id=$key");
$conn = null;
}
但它没有产生任何结果。
【问题讨论】:
-
尝试
echo您的SQL查询并将其复制粘贴到mysql控制台。如果有错误,您会看到错误 -
+ 尝试将值
SET括在引号中 (') 或 (")UPDATE settings SET settingValue='$settingValue' WHERE id='$key' -
也可以试试
print_r($_POST['settingValue'])或print_r($_POST)并检查数组。 -
提示:
label for=必须指向元素的id,而不是name。 -
感谢 WouterH 的小费从来不知道!我的名字和身份证总是一样的,所以我从来不知道有什么区别......:/但现在我知道了:)
标签: php mysql html arrays forms