4

我的网站上有一个表单,它使用数组来提交复选框数据。然后,我尝试使用 foreach 循环操作该数据,为每个复选框数据添加一个“:”,然后我想将其变成一个可以插入数据库的字符串。

这是我的 HTML 代码:

while($row = $result->fetch_assoc())
{
echo '<tr><td><input type="checkbox" name="pluginlist[]" value="'.$row['plugin'].'" /></td><td> '.$row['plugin'].'</td></tr>';
}

$row['plugin'] 是来自数据库中不同表的数据。

这是我的 PHP 代码 $_POST 数据,然后运行 ​​foreach 循环:

if(!empty($_POST['pluginlist'])) {
        foreach($_POST['pluginlist'] as $plugins) {
            $plugins1 = $plugins.":";
            }
            echo $plugins1;
}

echo $plugins1 仅回显最后一个带有“:”的复选框数据。

我怎样才能做到这一点,以便我可以一次将所有复选框数据插入数据库?

4

3 回答 3

3

连接这些值。否则,您将$plugins1在每次迭代时分配一个新值。

$plugins1 .= $plugins.':'; // Correct - note the extra dot before the equal sign

不是

$plugins1 = $plugins.':'; // Incorrect - would "reset" the value each time

或者,您也可以使用implode将所有数组值连接到单个字符串:

$plugins1 = implode(':', $_POST['pluginlist'])
于 2013-03-27T00:03:40.830 回答
3

你可以serialize数据,我觉得这样方便多了!

或者你可以试试

$plugins1 = implode(":" , $_POST['pluginlist']);
于 2013-03-27T00:03:35.187 回答
1

这是你想要做的吗?我可能没有理解你的问题。等号之前的点将连接,但您可能只想内爆。

$plugins1 = '';
if(!empty($_POST['pluginlist'])) {
        foreach($_POST['pluginlist'] as $plugins) {
            $plugins1 .= $plugins.":";
            }
echo $plugins1;
echo "<br />or<br/ >";
$plugins2 = implode ($_POST['pluginlist'], ':');
echo $plugins2;
于 2013-03-27T00:09:51.940 回答