繁体   English   中英

使用PHP和复选框更新MySQL表

[英]Updating MySQL table with PHP and checkboxes

我有一张称为产品的表格,其中有:

idint,主键,自动递增 product_namevarchar 高亮显示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()返回一个布尔值,并且foreach需要一个数组。

您也很容易进行mysql注入。

除了blake305所说的之外,您需要更改以下内容:

echo "<input type='checkbox' checked value='1' name='checkBox[]'>";

这将为您提供$_POST['checkBox']的数组-不幸的是,您的ID消失了。

如果那是必要的,则需要显式获取每个框:

name='checkBox_<?php echo $q['id']; ?>

并且不要在名称后使用[] ,因为它在PHP中具有某些含义:POST结果将是数组而不是字符串。

添加:这看起来也很奇怪: name='checkBox['"; ?><?php echo $q['id']; ?><?php echo "']'>不应该是name='checkBox[\\"" . $q['id']. "\\"]... name='checkBox[\\"" . $q['id']. "\\"]...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM