【问题标题】:PHP posting checkbox dataPHP发布复选框数据
【发布时间】:2014-02-21 16:10:59
【问题描述】:

我正在进行一项调查,我想将数据发布到我的数据库中。但是我遇到了一个问题,如果我想发布复选框数据,它只会发布最后一个复选框。希望我能得到一些帮助,代码如下:

html

<form name="x" id="submit1" action="confirm_medici.php" method ="post" onsubmit="validator();return false;" target="_self">

<input type="checkbox" name="opsystem" value="Android">Android<br>
<input type="checkbox" name="opsystem" value="Windowsphone">Windows Phone<br>
<input type="checkbox" name="opsystem" value="Ios">IOS (Apple)<br><br>
Else: <input type="text" name="opsystem" size="75"><br>


php

 <?php
$con=mysqli_connect("x","x","x","x");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }


$question1=$_POST['opsystem']; 

$sql="INSERT INTO medici (colum1)
VALUES
('$question1')";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
echo "1 record added";

mysqli_close($con);
?>

【问题讨论】:

    标签: php html database post insert


    【解决方案1】:

    重命名字段,使名称以字符[] 结尾。然后 PHP 会将其公开为一个数组,而不是转储除最后一项之外的所有内容。

    name="opsystem[]"
    
    $_POST['opsystem']
    

    【讨论】:

    • 这是第一步,接下来是 INSERT,其值为 Array。
    • @ChrisForrence — 在数组上使用 for 循环并在每次循环时插入。
    【解决方案2】:

    如果您的复选框是多选,您只需将[] 添加到复选框名称的末尾即可。

    <input type="checkbox" name="opsystem[]" value="...">...</input>
    

    然后在php中:

    $checkbox = $_POST['opsystem'];
    
    foreach ($checkbox as $item) {
        ... Database Insertion Code For Each Checkbox Here
    }
    

    然后,您可以在 foreach 中运行查询以将答案插入数据库。或者你可以对数组进行内爆而不是对其运行 foreach,然后将新字符串插入到数据库中。

    使用内爆:

    $checkbox = $_POST['opsystem'];
    
    $checkboxResults = implode(',', $checkbox);
    
    $sql = 'INSERT INTO medici (column1) VALUES ('.$checkboxResults.')';
    

    我还要指出这个 SQL 不好!它对sql注入开放。

    【讨论】:

    • 我试过了,但每次我尝试使用explode或预测函数时,我都会收到如下错误消息:Warning: implode() [function.implode]: Invalid arguments pass in
    • 如果它通过 implode 给出该错误,听起来您的 $_POST 不包含 'opsystem'. Try a var_dump($_POST)` 并确保 $_POST 包含您使用发送的数据表格。
    猜你喜欢
    • 2013-11-09
    • 2011-09-07
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多