2013-12-21 2 views
0

나는반환 많은 값은

 
number  | name   | friend 
------------------------------- 
1   |John   | Kloey 
2   |John   | Tara 
3   |Marco   | Tia 
4   |John   | Clara 

내가 배열 또는 문자열 또는에서 이름 열에 존에 해당하는 친구 열에서 모든 이름을 얻을 필요가 MySQL 데이터베이스에이 테이블이 내가 안드로이드에서받을 수있는 모든 것? 어떻게해야합니까?

여기 내 PHP 코드입니다하지만 그것은 단지 kloey 인 1 이름을 반환에만

$username = $_POST["username"]; 
$recordofusername = mysql_query("SELECT * FROM friends WHERE name='$username'"); 
$value1 = mysql_fetch_array($recordofusername); 
$user_friendname = $value1['friend']; 
$response["userfriends"] = $user_friendname; 

echo json_encode($response); 
+2

을 당신은 ** 정말 **이 [upvoting and accepting] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) 답변에 대한 개념을 익히십시오. 그렇게하지 않으면 사람들은 자신의 시간과 노력에 감사하지 않기 때문에 도움을 멈추게됩니다. – peterm

답변

1
  1. 되지 mysql_* 확장자를 사용하지 마십시오.
  2. 코드를 SQL 주입에 취약하게 두는 쿼리 문자열을 보간하지 마십시오. 자세히 알아보기 prepared statementsmysqli_* 또는 PDO
  3. 과 함께 사용하면 더 많은 행을 포함하는 결과 집합을 얻으면 결과 집합을 반복하여 코드에 없었던 모든 행을 가져와야합니다. 따라서 코드에서 항상 결과 집합의 첫 번째 행에서 단 하나의 이름 만 가져옵니다.
  4. SELECT *을 사용하지 마십시오. 대신 명시 적으로 선택해야하는 열을 지정하십시오. 귀하의 경우에는 단지 friend 컬럼이 필요합니다. 말했다되고 그건

당신에게 당신의 코드가 mysqli

$name = $_POST['username']; 
$friends = array(); 
$db = new mysqli('localhost', 'user', 'password', 'dbname'); 
if (!$db) { 
    die('Could not connect: ' . $db->connect_error); //TODO: better error handling 
} 
$sql = "SELECT friend FROM friends WHERE name = ?"; 
if ($stmt = $db->prepare($sql)) { 
    $stmt->bind_param('s', $name); 
    $stmt->execute(); 
    $stmt->bind_result($friend); 

    while ($stmt->fetch()) { // you have to iterate over the resultset 
     $friends[] = $friend; 
    } 
    $stmt->close(); 
} else { 
    die('Prepare failed: ' . $db->error); //TODO: better error handling 
} 
$db->close(); 

$response['userfriends'] = $friends; 
echo json_encode($response); 

샘플 출력하여 같이하는 방법 아이디어 제공합니다 : 이전 질문에서 찾고

 
{"userfriends":["Kloey","Tara","Clara"]} 
+0

그래서 도움이 되었습니까? – peterm