2017-02-18 15 views
0

私のアンドロイドアプリには、3種類のUIがあります。バックエンドで私はアンドロイドでWebサービスを呼び出すためにPHPを使用しました。私の場合、1つのテーブル、すなわち列、すなわち名字、姓、電子メール、パスワード、性別、都市、国などを持つ登録の詳細があります。次に、3番目のフィールド、すなわち名字、姓または名字のPHP Webサービスを作成します。 Eメール。データベースに正常に挿入されます。今パスワード、生年月日の性別私は解雇しました。ヌル列の更新クエリを次に正常に挿入されますが、テーブルにnullフィールドのいずれかがある場合、新しい挿入レコードでnullフィールドを更新します。私は私のコンセプトが正しいか間違っているか分からない。異なるUIから1つのテーブルにデータを挿入する方法は?

PHPコード

public function StoreInfo($firstname, $lastname, $email) 
{ 

    $stmt = $this->conn->prepare("INSERT INTO ibeInsert(firstname,lastname,email) VALUES(?,?,?)"); 
    $stmt->bind_param("sss", $firstname,$lastname,$email); 
    $result = $stmt->execute(); 
    $stmt->close(); 

    if($result) 
    { 
     $stmt = $this->conn->prepare("SELECT firstname,lastname,email FROM ibeInsert WHERE email = ?"); 
     $stmt->bind_param("s",$email); 
     $stmt->execute(); 
     $stmt->bind_result($token2,$token3,$token4); 
     while($stmt->fetch()) 
     { 
      $user["firstname"]=$token2; 
      $user["lastname"]=$token3; 
      $user["email"]=$token4; 
     } 
     $stmt->close(); 
     return $user; 
    } 
    else 
    { 
     return false; 
    } 
} 

PHPファイル内の関数を呼び出す:私は挿入すると、私の第二部(性別、国、都市)データベースで

Update query fired on same table 

public function StoreInfoTo($gender,$country,$city) 
    { 

    $stmt = $this->conn->prepare("UPDATE ibeInsert SET gender=?,country=?,city=? WHERE id=? OR gender IS NULL OR country IS NULL OR city IS NULL"); 
    $stmt->bind_param("sssi", $gender, $country, $city,$id); 
    $result = $stmt->execute(); 

    $stmt->close(); 
    if ($result) { 
     $stmt = $this->conn->prepare("SELECT gender, country,city,id FROM ibeInsert"); 
     $stmt->execute(); 
     $stmt-> bind_result($token2,$token3,$token4,$token1); 
     while ($stmt-> fetch()) { 
      $user["gender"] = $token2; 
      $user["country"]=$token3; 
      $user["city"] = $token4; 
      $user["id"]=$token1; 
     } 
     $stmt->close(); 
     return $user; 
    } else { 
     return false; 
    } 

} 

<?php 

    require_once 'update_user_info.php'; 
    $db = new update_user_info(); 

    $response = array("error" => FALSE); 

    if (isset($_POST['firstname']) && isset($_POST['lastname']) &&  isset($_POST['email'])) 
{ 
// receiving the post params 
    $firstname = $_POST['firstname']; 
    $lastname =$_POST['lastname']; 
    $email = $_POST['email']; 
    // create a new user 
    $user = $db->StoreSocialInfo($firstname,$lastname,$email); 
    if ($user) { 
     // user stored successfully 
     $response["error"] = FALSE; 
     $response["user"]["firstname"] = $user["firstname"]; 
     $response["user"]["lastname"]=$user["lastname"]; 
     $response["user"]["email"] = $user["email"]; 
     echo json_encode($response); 
     } 
     else 
     { 
     // user failed to store 
     $response["error"] = TRUE; 
     $response["error_msg"] = "Unknown error occurred in registration!"; 
     echo json_encode($response); 
     } 

} else { 
    $response["error"] = TRUE; 
    $response["error_msg"] = "Required parameters (Firstname,lastname,email) is missing!"; 
    echo json_encode($response); 
} 
    ?> 

をデータベースへの新しいレコード、最後に挿入されたレコードは、そのような性別の国の都市で更新されます:

ID:1名:リッシュ姓:シャー性別:女性、国:インド都市:ムンバイ ID:2名:XYZの姓:POS性別:女性、国:インド都市:ムンバイ

最後の3列新しいレコードがデータベースに挿入されると更新されます。

+0

あなたの問題は何ですか、最後に挿入されたレコードが更新されているようですか? – user7417866

+0

はい、同様の更新、最後の3列の性別、国の都市のみを更新します。あなたが私の挿入の概念が正しいか間違っているか教えていただけたら大丈夫ですか? @ user7417866 –

+0

あなたの疑問を明確にすることを願います。 – user7417866

答えて

0

私は私はあなたがwhere句あなたは意志に使用してOR条件されているので、あなたは、あなたの更新機能

public function StoreInfoTo($gender,$country,$city) 

にIDを渡している見ることができない

$stmt = $this->conn->prepare("UPDATE ibeInsert SET gender=?,country=?,city=? WHERE id=? OR gender IS NULL OR country IS NULL OR city IS NULL"); 

、PROBは、あなたの更新クエリであると思います最後に挿入された値を常にnullにしておき、更新を起動するたびにこれらのヌル値をフェッチして更新します。

where句にnull値を使用するのではなく、IDまたはインデックス値を検索してレコードを識別する必要があります。

また、テーブルのIDインデックスとANDを使用しない限り、テーブルに複数のNULL値があり、更新によってすべてのNULL値が置換されるため、NULL値の更新は推奨されません。 欲しいもの:

+0

私は混乱している例を挙げてもらえますか? @ user7417866 –

+0

私はPHPの男ではない、私はあなたの代わりに使用すると、更新クエリの呼び出しと同じIDを更新する前に、あなたの更新クエリとIDをフェッチするために使用する。 – user7417866

+0

私はIDを更新クエリに渡す新しいレコードが挿入されますが、最後に挿入されたIDには挿入されません。最後に挿入されたレコードにレコードを挿入して、Updateクエリを使用する理由を示します。 @ user7417866 –

関連する問題