数组值不单独插入数据库

时间:2014-06-23 22:14:42

标签: php arrays insert

我不确定如何表达这一点,所以我将展示一个例子。我在javascript中收集输入值并传递到我的php页面,我试图在数据库中插入这些值。

不是插入单独的值,而是插入整个字符串。

我的部分javascript如下:

var form = document.forms[0];
var txtS = form["bulletlabels"];
var len = txtS.length;
var bulletlabels = "";
for(i=0;i<len;i++) {
    bulletlabels += '"'+[i]+'_'+(txtS[i].value)+'_label",';
    }

当我发出警报时(子弹标签);我明白了:

"0_Lot Size_label","1_Rooms_label","2_Bathrooms_label","3_Basement_label",

在我的php页面上,我有:

$bulletlabels = array($_POST['bulletlabels']);

$length = count($bulletlabels);
for ($i = 0; $i < $length; $i++) {
mysqli_query($con,"UPDATE bullets SET bullettitle = '".$bulletlabels[$i]."' WHERE bulletrow = ($i+1)");
}

这会将以下字符串插入到ONE Row上的数据库中,这不是所需的效果:

"0_Lot Size_label","1_Rooms_label","2_Bathrooms_label","3_Basement_label",

但这是我困惑的关键 - 如果我手动输入字符串,它会根据需要插入到各个数据库行。

手动输入时,根据需要单独插入值:

$bulletlabels = array("0_Lot Size_label","1_Rooms_label","2_Bathrooms_label","3_Basement_label",);

不起作用并插入完整的连接字符串: $bulletlabels = array($_POST['bulletlabels']);

希望我解释得很好 - 阵列躲避我。

修改:
修复尾随逗号:

var delim = "";
for(i=0;i<len;i++) {
bulletlabels += delim+[i]+'_'+(txtS[i].value)+'_label';
delim = ",";
}

尾随逗号修复的参考链接:

Can you use a trailing comma in a JSON object?

1 个答案:

答案 0 :(得分:1)

尝试更改以下行:

$bulletlabels = array($_POST['bulletlabels']);

$bulletlabels = explode(',', $_POST['bulletlabels']);

也不要在javascript中添加引号:

 bulletlabels += '"'+[i]+'_'+(txtS[i].value)+'_label",';

应该是

 bulletlabels += [i]+'_'+(txtS[i].value)+'_label,';

<强>解释

目前,$ bulletlabels是一个包含一个元素的数组,该元素是以下字符串:"0_Lot Size_label","1_Rooms_label","2_Bathrooms_label","3_Basement_label",。但是,您希望拥有一个包含多个字符串的数组。这就是您需要使用the explode function将其转换为正确数组的原因。

注意:

确保不在标签名称中包含,,因为它会破坏此实现。如果您还需要能够使用,,则应使用json函数。