Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP插入数据库_Php_Sql_Database_Checkbox - Fatal编程技术网

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,",");