我不确定如何表达这一点,所以我将展示一个例子。我在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 = ",";
}
尾随逗号修复的参考链接:
答案 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函数。