2017-02-01 2 views
1

Der Code, den ich geschrieben habe, ist die Profil-ID aus der Tabelle zu bekommen, und ich möchte die ungewöhnliche, aber wenn ich array_diff oder array_diff_assoc die out []Array_diff() erzeugt nicht die richtige Ausgabe für zwei Array Fetch aus der gleichen Tabelle in PHP

require_once __DIR__ .'/connect.php'; 
$db = new DB_CONNECT(); 


$result = mysql_query("select PROFILE_ID from chat_group_members where GROUP_ID =4"); 
$reg = mysql_query("select PROFILE_ID from chat_group_members where GROUP_ID = 5"); 

$reg1 = mysql_fetch_assoc($result);//result is profile_id 9 
$result1 = mysql_fetch_assoc($reg);//result is profile_id 9 and Profile id 11 

$result2=array_diff_assoc($result1,$reg1); 
echo json_encode ($result2); 
//output is blank [] 
+4

** WARNUNG **: Wenn Sie nur PHP lernen, lernen Sie bitte nicht das obsolete ['mysql_query'] (http://php.net/manual/en/function.mysql-query.php) Schnittstelle. Es ist schrecklich und wurde in PHP 7 entfernt. Ein Ersatz wie [PDO ist nicht schwer zu erlernen] (http://net.tutsplus.com/tutorials/php/why-you-should-beusing-phps-pdo- for-database-access /) und ein Leitfaden wie [PHP The Right Way] (http://www.phptherightway.com/) hilft Best Practices zu erklären. Machen Sie ** sicher ** Ihre Benutzer-Parameter sind [richtig maskiert] (http://bobby-tables.com/php) oder Sie werden mit schweren [SQL-Injektion Bugs] (http://bobby-tables.com/)). – tadman

Antwort

1

Erstens, wenn Sie mit PHP, dies zu tun werden, nicht array_diff_assoc für diese, weil sie Schlüssel sowie Werte überprüft, so dass, wenn Sie einige der gleichen Schlüssel haben im zweiten Array, aber in einer anderen Reihenfolge, wird es ihnen nicht entsprechen. Nur eine einfache array_diff wird besser funktionieren.

Zweitens, es sei denn, ein anderer Code ist hast du nicht gezeigt, $result1 tut nicht enthalten 9 und 11, weil mysql_fetch_assoc (oder mysqli_fetch_assoc, wenn Sie auf eine unterstützte Schnittstelle Upgrade) nur eine Zeile von den Ergebnissen abruft.

Sie müssen alle Ergebnisse abrufen, bevor Sie diesen Vergleich durchführen können.

Aber Sie müssen dies in PHP überhaupt nicht tun. Sie können es stattdessen mit einer Abfrage tun. Es gibt ein paar Möglichkeiten, dies zu tun; Eine Möglichkeit besteht darin, NOT IN mit einer Unterabfrage zu verwenden.

SELECT PROFILE_ID FROM chat_group_members 
WHERE GROUP_ID = 5 
AND PROFILE_ID NOT IN (SELECT PROFILE_ID FROM chat_group_members WHERE GROUP_ID = 4) 

Aber Sie müssen immer noch alle Ergebnisse abrufen. Das wird oft mit einer while Schleife gemacht. You can see some examples in the mysqli documentation here.

+0

Danke für den Vorschlag Kumpel. Ich habe die gewünschte Ausgabe tatsächlich bekommen, ich habe vergessen, dass ich eine Schleife ausführen muss, um alle Array-Elemente zu erhalten. –

Verwandte Themen