PHP插入数据库
嘿,伙计们,我正试图在数据库中插入一些复选框,我很确定我的代码是正确的,但是我不断收到错误PHP插入数据库,php,sql,database,checkbox,Php,Sql,Database,Checkbox,嘿,伙计们,我正试图在数据库中插入一些复选框,我很确定我的代码是正确的,但是我不断收到错误错误插入:列计数与第1行的值计数不匹配 基本上,我将每个复选框添加到数据库中的不同列中 这是我的密码 $idextra=$_POST['extras']; $arr_num=count($idextra); $i=0; while ($i < $arr_num) { $qu="INSERT INTO bs_reservations (deodoriser
错误插入:列计数与第1行的值计数不匹配
基本上,我将每个复选框添加到数据库中的不同列中
这是我的密码
$idextra=$_POST['extras'];
$arr_num=count($idextra);
$i=0;
while ($i < $arr_num)
{
$qu="INSERT INTO bs_reservations (deodoriser,carpet,carpetrepair,furniture,tabs,urine) VALUES ('$idextra[$i]')";
$res=mysql_query($qu) or die('ERROR INSERTING: '.mysql_error());
$i++;
}
我基本上希望获取用户选择的所有输入并将其插入数据库。您有以下列:
(deodoriser,carpet,carpetrepair,furniture,tabs,urine)
您正在插入以下内容:
'$idextra[$i]'
这是6列和1个值。正如错误所说,这是不一样的
你的意思可能是这样的:
('{$idextra[1]}','{$idextra[2]}','{$idextra[3]}','{$idextra[4]}','{$idextra[5]}','{$idextra[6]}')
如果您想事先从数组中生成一个字符串,请使用
echo
确认查询是否正确:)您有以下列:
(deodoriser,carpet,carpetrepair,furniture,tabs,urine)
您正在插入以下内容:
'$idextra[$i]'
这是6列和1个值。正如错误所说,这是不一样的
你的意思可能是这样的:
('{$idextra[1]}','{$idextra[2]}','{$idextra[3]}','{$idextra[4]}','{$idextra[5]}','{$idextra[6]}')
如果您想事先从数组中生成一个字符串,请使用
echo
确认查询是否正确:)不要对复选框使用数组,而是为它们指定不同的名称,例如
<input type="checkbox" name="carpetrepair" id="carpetrepair" value="Carpet Repair Tools"/>
为复选框指定不同的名称,而不是使用数组,例如
<input type="checkbox" name="carpetrepair" id="carpetrepair" value="Carpet Repair Tools"/>
这就是bz值没有用逗号“,”分隔的问题??我喜欢裸$\u POST
变量也没有验证/清理;)对不起,您的代码不正确。你所做的正是mysql所为。如果你告诉我们你想做什么,我们可以帮助你。你能在这里粘贴你的html代码来生成复选框吗?顺便说一句,当html表单代码被更改时,您只需要计算期望按正确顺序发布的值,这可能会导致严重/持续的问题。这是一个问题,bz值没有用逗号“,”分隔??我喜欢裸$\u POST
vars没有验证/消毒的方式;)对不起,您的代码不正确。你所做的正是mysql所为。如果你告诉我们你想做什么,我们可以帮助你。你能在这里粘贴你的html代码来生成复选框吗?顺便说一句,当html表单代码被更改时,您只需要计算预计按正确顺序发布的值,这可能会导致严重/持续的问题。这样做有效,但是有6个复选框,如果客户只选择前2个和最后一个,当插入数据库时,它会将最后一个复选框插入第三列复选框的技巧是:在复选框之前添加一个值为0的隐藏字段/输入。如果选中,则第二个字段将覆盖您的值,并获得1(或true)。如果第二个未选中,则窗体将忽略它,但第一个(隐藏)未选中,因此它将通过其0。presto,6个值,每个人都很高兴:我如何添加“隐藏值”只需添加一个value='0'
输入类型不必是复选框?这样做很有效,但是有6个复选框,如果客户只选择前2个和最后一个,当插入数据库时,它会将最后一个复选框插入第三列复选框的技巧是:在复选框之前添加一个值为0的隐藏字段/输入。如果选中,则第二个字段将覆盖您的值,并获得1(或true)。如果第二个未选中,则窗体将忽略它,但第一个(隐藏)未选中,因此它将通过其0。presto,6个值,每个人都很高兴:我如何添加一个“隐藏值”只要添加一个value='0'
输入类型不必是复选框吗?抱歉这么晚了,伙计,只是想知道这到底是怎么回事。它会给每个变量指定一个名称并将其插入数据库吗?还是我需要添加更多的代码?抱歉这么晚了,mate,只是想知道这到底是如何工作的。它会为每个变量指定一个名称并将其插入数据库中,还是需要添加更多代码
$options = explode(",","deodoriser,carpet,carpetrepair,furniture,tabs,urine");
$sql = "INSERT INTO bs_reservations SET ";
foreach($options as $opt){
if (isset($_POST[$opt])) {
$sql.= "`$opt`=1,";
}
}
$sql = rtrim($sql,",");