2015-02-06 3 views
1

안녕하세요 아래 그룹 채팅 애플리케이션을 만들고 있는데 클라이언트 측에서 action = createGroup을 사용하여 아래 세부 정보를 전달하고 있습니다.레코드가 안드로이드에있는 PHP를 사용하여 데이터베이스에 저장되지 않습니다.

자바

public String CreateGroup(String groupname,String username, 
      ArrayList<FriendInfo> result) throws UnsupportedEncodingException { 

     List<String> usersName = new ArrayList<String>(); 
      for (int i = 0; i < result.size(); i++) { 
      usersName.add(result.get(i).userName); 
      } 
       String params = "groupname="+ URLEncoder.encode(groupname,"UTF-8") + 
         "&username="+ URLEncoder.encode(this.username,"UTF-8") + 
         "&password="+ URLEncoder.encode(this.password,"UTF-8") + 
         "&friendUserName=" +usersName+  
         "&action=" + URLEncoder.encode("CreateGroup","UTF-8")+ 
         "&"; 

      Log.i("PARAMS", params); 
      return socketOperator.sendHttpRequest(params); 

이 내 서버 측 code.Where 내가했던 실수 database.Can에 저장되지 않은 데이터는 하나가 나에게 도움을 주시기 바랍니다 때문에

PHP

case "CreateGroup": 
    $userId = authenticateUser($db, $username, $password); 

    if ($userId != NULL) 

    { 

     if (isset($_REQUEST['friendUserName']))   
     {    
      $friendUserNames = $_REQUEST['friendUserName']; 
      $friendUserNames = str_replace('[','',$friendUserNames); 
      $friendUserNames = str_replace(']','',$friendUserNames); 
      $friendUserNames = explode(",", $friendUserNames); 
      foreach($friendUserNames as $friendUserName){ 

      $groupname = $_REQUEST['groupname']; 

      $sql = "select Id from users where username='$friendUserName' limit 1"; 
      echo $sql; 
      if ($result = $db->query($sql)) 

      { 
        if ($row = $db->fetchObject($result)) 

        { 
         $requestId = $row->Id; 

         $groupname = $row->Id; 

         if ($row->Id != $userId) 
         { 
           $sql = "insert into group (groupname,providerId, requestId)values(".$groupname.",".$userId.",".$requestId.")"; 
           echo $sql; 


           if ($db->query($sql)) 
           { 
             $out = SUCCESSFUL; 
           } 
           else 
           { 
             $out = FAILED; 
           } 
         } 
         else 
         { 
          $out = FAILED; 
         }             
        } 
        else 
        { 
         $out = FAILED;      
        } 
      } 

      else 
      { 
        $out = FAILED; 
      }    
     } 
     } 
     else 
     { 
       $out = FAILED; 
     }   
    } 
    else 
    { 
     $out = FAILED; 
    } 
break; 

CREATE TABLE IF NOT EXISTS `group` (
`id` int(11) NOT NULL, 
    `groupname` varchar(25) NOT NULL, 
    `providerId` int(25) NOT NULL, 
    `requestId` int(5) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; 

-- 
-- Indexes for dumped tables 
-- 

-- 
-- Indexes for table `group` 
-- 
ALTER TABLE `group` 
ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `username` (`providerId`), ADD UNIQUE KEY `userid` (`providerId`), ADD UNIQUE KEY `ufriendid` (`requestId`); 
+0

와; ?? –

+0

@noob 두 번째 에코가 출력되지 않습니다. FAILED가됩니다. – user1

+0

abot first echo $ sql; –

답변

1

$ _REQUEST [ 'friendUserName']이 (가) 하나 이상의 사용자 이름 (배열)을 게시하고 있습니다. 그래서 당신은 제대로

시도 교체를 처리 할 필요가 :

$friendUserName = $_REQUEST['friendUserName']; 

초 에코 $의 SQL의 출력 무엇

$friendUserNames = $_REQUEST['friendUserName']; 
$friendUserNames = str_replace('[','',$friendUserNames); 
$friendUserNames = str_replace(']','',$friendUserNames); 
$friendUserNames = explode(",", $friendUserNames); 
foreach($friendUserNames as $friendUserName){ 
//your rest of code as it is 
} //and end tag for for loop at appropriate position from your code before the last second else 
관련 문제