Web Services Android和SQLite中使用JSON的PHP Web服务的问题

rt4zxlrg  于 2023-01-31  发布在  Android
关注(0)|答案(1)|浏览(165)

我正在制作一个Web服务,它从Android应用程序中获取JSON flux并将其插入MySQL数据库。我的应用程序(在Android Studio的模拟器中运行)没有导出错误,似乎问题出在Web服务上。当我从应用程序导出数据并调用Web服务时,我的数据库中没有任何内容。
下面是Web服务代码

$hote='mysql:host=localhost;port=3306;dbname=gedimat';
$utilisateur='root';
$mot_passe='';
try {
  $connexion = new PDO($hote, $utilisateur, $mot_passe);
  $connexion->exec("set names utf8");
  return $connexion;
}
catch(PDOException $e) {
  echo 'Erreur : '.$e->getMessage().'<br />';
  echo 'N° : '.$e->getCode();
  return null;
}

// récupération du flux JSON
$json = file_get_contents('php://input');
$obj = json_decode($json);

// insertion ou mise à jour des données dans la table Vote
$res = $obj->Votes;

foreach($res as $unVote) {
  $requete = 'INSERT INTO vote(idVote, numTicket, idImage, note, dateVote) VALUES(:idVote, :numTicket,:idImage,:note,:dateVote)';
  $prep = $connexion->prepare($requete);
  $prep->bindValue(':idVote', $unVote->{'idVote'}, PDO::PARAM_INT);
  $prep->bindValue(':numTicket',$unVote->{'numTicket'} , PDO::PARAM_STR);
  $prep->bindValue(':idImage', $unVote->{'idImage'}, PDO::PARAM_STR);
  $prep->bindValue(':note', $unVote->{'note'}, PDO::PARAM_STR);
  $prep->bindValue(':dateVote', $unVote->{'dateVote'}, PDO::PARAM_STR);
  $ok =$prep->execute();

我的json数据如下所示

{"Votes":
    [
        {"idVote":1,
        "numTicket":"88888",
        "idImage":"2131165284",
        "note":"3",
        "dateVote":"2018-05-04"
        }
    ]
}

如果你能帮助我,这将是非常感谢。如果你需要更多的信息问我

hl0ma9xz

hl0ma9xz1#

如果它只是一个包含对象的数组,那么循环是不必要的。

$res = $obj->Votes[0];  // $res is now the object

$requete = 'INSERT INTO vote
                            (idVote, numTicket, idImage, note, dateVote) 
                    VALUES (:idVote, :numTicket, :idImage, :note, :dateVote)';
$prep = $connexion->prepare($requete);

$prep->bindValue(':idVote', $res->idVote, PDO::PARAM_INT);
$prep->bindValue(':numTicket',$res->numTicket, PDO::PARAM_STR);
$prep->bindValue(':idImage', $res->idImage, PDO::PARAM_STR);
$prep->bindValue(':note', $res->note, PDO::PARAM_STR);
$prep->bindValue(':dateVote', $res->dateVote, PDO::PARAM_STR);

$ok = $prep->execute();

如果数组中可能有多个对象,则这应该适用于该数组中的1个或多个对象。

// prep the query outside the loop
// this can be reused, so dont do it each time round the loop
// and save a lot of trips to and from the database server for
// unnecessary compiles of the same query
$requete = 'INSERT INTO vote
                        (idVote, numTicket, idImage, note, dateVote) 
                VALUES (:idVote, :numTicket,:idImage, :note, :dateVote)';

$prep = $connexion->prepare($requete);

foreach ($obj->Votes as $vote ) {

    $prep->bindValue(':idVote',     $vote->idVote, PDO::PARAM_INT);
    $prep->bindValue(':numTicket',  $vote->numTicket, PDO::PARAM_STR);
    $prep->bindValue(':idImage',    $vote->idImage, PDO::PARAM_STR);
    $prep->bindValue(':note',       $vote->note, PDO::PARAM_STR);
    $prep->bindValue(':dateVote',   $vote->dateVote, PDO::PARAM_STR);

    $ok = $prep->execute();
}

相关问题