向MySQL提交复选框时出错

时间:2014-04-26 09:19:45

标签: php html sql forms checkbox

我有以下用于将表单提交到数据库的php代码唯一的问题是复选框...提交表单显示

警告:join()[function.join]:第16行/srv/disk6/1662822/www/website.co.nf/connect-mysql.php中传递的参数无效

<?php
    $host="host.com" ;
    $username="1662822_db1" ;
    $password="awesomepassword" ;
    $db_name="1662822_db1" ;
    $tbl_name="courses" ;
        $dbcon = mysqli_connect("$host","$username","$password","$db_name") ;           

        if (!$dbcon) {
        die('error connecting to database'); }

        echo 'Courses successfully registerd , ' ;  

    // escape variables for security
    $studentid = mysqli_real_escape_string($dbcon, $_POST['studentid']); echo $studentid;
    **$ckb = join (', ', $_POST['ckb']);** 


    **$sql="INSERT INTO courses (studentid, ckb)
    VALUES ('$studentid', '$ckb')";**

    if (!mysqli_query($dbcon,$sql)) {
    die('Error: ' . mysqli_error($dbcon));
}
echo "  Thank you for using IME Virtual Registeration  ";   
        mysqli_close($dbcon);
?>

错误是 警告: join()[function.join]:第16行/srv/disk6/1662822/www/website.com/connect-mysql.php中传递的参数无效

我理解它与连接功能有关(显然),但我不明白它是什么......

复选框的HTML代码

<input type="checkbox" name="ckb" value="strenthofmaterials";>
<label for="StrengthofMaterials"> Strength Of Materials </label>
<input type="checkbox" name="ckb" value="dynamics";>
<label for="StrengthofMaterials"> dynamics </label>

只有更改每个复选框的值才会继续进行所有其他选择

另一条信息,mysql数据库中的ckb字段在tinyint中输入,默认值为0 ......我猜测它不是我正在寻找的类型..?

2 个答案:

答案 0 :(得分:0)

您的复选框应采用数组形式......

<input type="checkbox" name="ckb[]" value="strenthofmaterials";>
<label for="StrengthofMaterials"> Strength Of Materials </label>
<input type="checkbox" name="ckb[]" value="dynamics";>
<label for="StrengthofMaterials"> dynamics </label>

注意: ckb[]而非ckb

答案 1 :(得分:0)

$ckb = array();
foreach($_POST['checkbox'] as $val){
    $ckb[] = (int) $val;
}
$ckb = implode(',', $ckb);

试试这个。 $ ckb应该是一个数组。 出于安全考虑,$ val以整数形式转换。