我的表单通过jquery将数据从表单发送到另一个页面,如下所示:-
<?
$counter=0;
$sqlmasmohType = mysql_query("select * from masmoh");
while ($rowmasmohType = mysql_fetch_array($sqlmasmohType))
{
$counter++;
if($counter % 4 == 0){
$class= "no-margin-left";
}else $class="";
?>
<div class="news-element <?= $class ?>"><input type="checkbox" id="masmoh" name="masmoh[]" value="<?=$rowmasmohType['id'] ?>" /> <?=$rowmasmohType['name'] ?></div>
<? } ?>
<div class="clear"></div>
<input type="hidden" name="ft_user_id" id="ft_user_id" value="<?=$iduser?>" class="input-text">
<input type="button" id="save_masmoh_user" name="save_masmoh_user" value="Save" class="custom-btn-train-parentt">
此表单将2个参数发送到saveMasmohToUser页面,其中一个参数是Array,我需要将这个数组保存到数据库中,如(1,5,p,55)
我要试试这个:-
public function saveMasmohToUser(){
$ft_user_id = $_POST['ft_user_id'];
$save_masmoh = $_POST['save_masmoh'];
$unserializedData = array();
parse_str($save_masmoh,$unserializedData);
if($save_masmoh != ''){
foreach($unserializedData as $unserializedData){
if ($unserializedData != ""){
$check = mysql_query("select count(*) as rowuser from masmoh_for_user where m_user_id = '".$ft_user_id."'");
$rowUser = mysql_fetch_array($check);
if ($rowUser['rowuser'] == 0)
{
$query = mysql_query("insert into masmoh_for_user (m_user_id,m_masmoh) values ('$ft_user_id','".implode($unserializedData, ',')."')");
}
else
{
$query = mysql_query("update masmoh_for_user set m_masmoh = '".implode($unserializedData, ',')."' where m_user_id = '".$ft_user_id."'");
}
$newData = array();
$newData['msg'] = "save";
$data = json_encode($newData);
echo $data ;
}
}
}
}但我会看到这个错误:-
消息: implode() function.implode:传递无效参数
但是当打印阵列$unserializedData是这样的:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)我怎样才能解决这个错误。
发布于 2013-09-07 01:37:38
问题在于:
foreach($unserializedData as $unserializedData){您不能使用与foreachd相同的变量名。将其更改为不同的名称,例如:
foreach($unserializedData as $simpleData){请注意,在执行此操作时,还应对代码进行适当的更改。在这种情况下,只更改这一行就可以了:
if ($unserializedData != ""){假设您以-is使用我的示例,只需将上面行的变量名更改为$simpleData即可。这一前兆故障也导致了内爆错误。
注意:根据PHP的文档,implode按任意顺序接受其参数。虽然一些用户报告说您使用了错误的顺序,但这是不相关的,您的代码应该使用任何您想要的顺序。
发布于 2013-09-07 00:02:36
你对内爆的呼吁是反向的。
implode(seperator, array);所以你可以这样用它:
implode(',', $unserializedData)发布于 2013-09-07 00:47:21
您应该使用<?php而不是<?。我认为<?是不可取的。(如果是的话,我会回来编辑这篇文章。)其次,它不应该是错误的(如果要将数组作为内爆的第二个参数传递)。
编辑
<?不受欢迎,但您仍然应该使用<?php。
编辑2
你要求内爆的呼吁是错误的。它的语法是这样的。
implode(seperator, array_to_be_seperated);
https://stackoverflow.com/questions/18668273
复制相似问题