0

我有表单通过 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'] ?>"  />&nbsp;&nbsp;<?=$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 页面,此参数之一是数组,我需要将此数组保存到数据库,如 (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
)

我该如何解决这个错误。

4

3 回答 3

0

问题在这里:

foreach($unserializedData as $unserializedData){

您不能使用与正在foreach通过的变量名称相同的变量名称。更改它以使名称不同,例如:

foreach($unserializedData as $simpleData){

请注意,您还应该在执行此操作时对代码进行适当的更改。在这种情况下,只更改这一行应该可以解决问题:

if ($unserializedData != ""){

假设您按原样使用我的示例,只需将上述行的变量名称更改为$simpleData. 该 foreach 故障也导致了内爆错误。

注意:根据 PHP 的文档,implode以任意顺序接受其参数。尽管有些用户报告您使用了错误的顺序,但这无关紧要,您的代码应该可以使用您想要的任何顺序。

于 2013-09-07T01:37:38.077 回答
-1

你对内爆的呼吁是倒退的。

implode(seperator, array);

所以你会像这样使用它:

implode(',', $unserializedData)
于 2013-09-07T00:02:36.153 回答
-1

您应该使用<?php而不是<?. 我相信<?已被弃用。(如果是,我会回来编辑这篇文章。)其次,它不应该出错(如果你将数组作为第二个参数传递给 implode)。

编辑

<?不推荐使用,但您仍应使用<?php.

编辑 2

你对内爆的呼吁是错误的。它的语法是这样的。
implode(seperator, array_to_be_seperated);

于 2013-09-07T00:47:21.217 回答