php - 使用 PHP 和复选框更新 MySQL 表

标签 php html mysql database checkbox

我有一个名为 products 的表,其中包含:

id:int,主键,自增 product_name:varchar 突出显示:int(1 或 0)

所以,我希望突出显示的字段可以通过我的管理页面完全更新,所以每当我获得每个产品(或行)的数据时,我都会在产品名称旁边有一个复选框,指示它是否突出显示 (1) 或 ( 0).

这是我的代码:

<?php
$host = "localhost";
$user = "root";
$pass = "usbw";
$db = "test";

mysql_connect($host,$user,$pass);
mysql_select_db($db);
?>

<?php

if(isset($_POST['submit']))
{
    foreach (isset($_POST['checkBox']) as $id => $value)
{
    mysql_query("UPDATE products SET highlighted='$value' WHERE id='$id'");
}
echo "Updated! <a href='index.php'>Back</a>";
}
else
{
    echo "<form action='index.php' method='POST'>";
    $result = mysql_query("SELECT * FROM products");
    while($q = mysql_fetch_assoc($result))
    {
        echo "".$q['product_name']."";
        if($q['highlighted'] == '1')
        {
            echo "<input type='checkbox' checked value='1' name='checkBox['"; ?><?php echo $q['id']; ?><?php echo "']'>";
    }
    else
    {
        echo "<input type='checkbox' value='1' name='checkBox['"; ?><?php echo $q['id']; ?><?php echo "']'>";
    }
    echo "<br>";
    }

echo "<input type='submit' value='submit' name='submit'>";
echo "</form>";
}

?>

出于某种原因,每当我尝试更新表单时都会收到以下错误:

Warning: Invalid argument supplied for foreach() in C:\Users\Badsector\Desktop\USBWebserver v8.5\8.5\root\teszt\index.php on line 15

提前感谢您的帮助,我现在完全糊涂了,我已经挣扎了几个小时了!

最佳答案

改变

foreach (isset($_POST['checkBox']) as $id => $value)

foreach ($_POST['checkBox'] as $id => $value)

isset() 返回一个 bool 值,foreach 需要一个数组。

你也容易被mysql注入(inject)。

关于php - 使用 PHP 和复选框更新 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17138788/

相关文章:

javascript - 从按钮列表创建可重复使用的按钮 css/jquery

php - 如何在 php MVC 中使用 if else

PHP Ajax 上传进度条

javascript - 如何在行表中查找div元素并返回值?

javascript - 相对于整个屏幕在 iframe 内保持固定位置

mysql - postgresql 插入一个 null 转换为默认值?

php - 编码线程多接收者消息传递系统的最佳实践?

php - 小组结果分组

javascript - 当用户选中复选框并单击按钮时如何访问不同的页面?

php - 限制每行表格单元格的数量