我有以下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。。。我猜这不是我要找的类型。。?
您的复选框应该是数组的形式。。。
<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
$ckb = array();
foreach($_POST['checkbox'] as $val){
$ckb[] = (int) $val;
}
$ckb = implode(',', $ckb);
试试这个$ckb应该是一个数组。出于安全目的,$val转换为整数。