【问题标题】:Array to String Error in Mysql using PHP使用PHP的Mysql中的数组到字符串错误
【发布时间】:2018-07-12 13:00:42
【问题描述】:

我有一个 Android 应用程序,它将 Json 作为字符串发送到 PHP 中的服务器。我已经使用 var_dump 进行了测试,以验证数据是否正确传递并且一切正常。问题是,当我尝试访问 json 并将主对象的嵌套数组中的值分配给 PHP 中的数组时,当我尝试将此数组包含在 Mysql 中时出现错误。我只测试了 PHP 和 MySQL,一切正常。

if  (!empty($_POST)){
   $info = file_get_contents('php://input');
   $json = json_decode($info, true);
   $login= "";
   $useExercise = array();
  //var_dump($info);

   foreach($json['Patient'][0] as $name){
      $login = $name;
   }


   foreach ($json['Patient'][1]as $exercise){
       $useExercise[] = array($exercise);
   }

for ($i=0; sizeOf($useExercise) > $i; $i++){

    $exercicies= mysqli_fetch_array($order);
    $sql1 = ("UPDATE patient_exercise
             INNER JOIN patients ON (patient_exercise.idpatient =  patients.ID)
             INNER JOIN exercises ON (exercises.idexercises  = patient_exercise.idexercise)
             SET patient_exercise.use_exercise=$useExercise[$i]     
             WHERE patient_exercise.idexercise= {$exercises['idexercise']} AND
                   patients.ID=(SELECT c.ID FROM (SELECT * FROM patients ) as c 
                                 WHERE c.login_patients  = '$login');");

    mysqli_query($connect, $sql1);


   }
}

错误发生在SET patient_exercise.use_exercise=$useExercise[$i]

而我的 Json 是:

{"Paciente":[{"Nome":"Rafael"},
           {"Exercicios":[{"0":"1"},
                        {"1":"0"},
                        {"2":"0"}]}]
}

可能出了什么问题?

【问题讨论】:

    标签: php android mysql arrays json


    【解决方案1】:

    认为您的主要问题是您通过跳步而不是一步一步来使其变得复杂。

    让它变得简单,因为它看起来很混乱,而且很难纠正,因为你的上下文和命名约定不容易理解。

    试试这个格式:$SQL = "UPDATE isignup SET password='". $NPass ."' WHERE custID='$num'";

    【讨论】:

    • 抱歉,我已经编辑了我的问题。我可以添加哪些步骤以便您更好地理解它?
    • 您正在一次更新数据库中的多行,尝试将其拆分为单行。
    • 连接问题出名
    • 取出连接,先不连接。
    • 但我使用的是 FOR。如何一次添加多行?我正在使用数组中的每个元素并一次添加每个元素。至少从我对 FOR 子句的理解来看。
    【解决方案2】:

    所以,我犯了一个错误,没有正确捕获来自$json 的数据。我也改变了我的 json 对象。 我所做的是:

     $result= array();
        foreach($json as $patients){
            foreach ($patients as $key=>$value){
                foreach ($value as $a=>$b)          
                        $result[] = $b;     
            }       
        }
    
        for ($i=0; sizeOf($result)>$i;$i++){
            if($i ==0){
                $login = $result[$i];
            } 
            else{
                $useExercise[]=$result[$i];
            }
        }
    

    还有我修改后的 Json:

    {"patient":[{"name":"rafael"},
                 {"0":"1","1":"0","2":"0"}
                ]
    }
    

    感谢 Kingsley Mitchell 抽出宝贵时间帮助我! :)

    【讨论】:

    • 对不起。我刚刚做完! :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 2013-04-27
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多