2016-04-06 16 views
1

Ich habe ein Array, das Daten von einer MySQL-Abfrage nimmt.php Sanitize Ausgabe Formular-Array

$mysql = "select distinct name from software"; 
$result = mysqli_query($conn, $mysql); 
    while($myrow = mysqli_fetch_assoc($result)) { 
     $array[] = $myrow; 
} 

Was würde ich tun möchte, ist die Datenausgabe haben, wie:

item1, item2, item3 

Am Ende, was ich tun möchte, der Lage sein, dass Informationen in einer Variablen zu speichern, zu verwenden eine mySQL-Abfrage

$array = item1, item2, item3 

select * from table where item != ($array) 

aber ich kann nicht die Daten zur Ausgabekorrekt erhalten,

Wenn ichwerden die Daten angezeigt und das Array ist gut.

Wenn ich array_key() verwende bekomme ich nur die Nummern, wie kann ich die Namen bekommen?

print_r Ausgang:

([0] => Array ([name] => Skype for Business Basic 2016 - en-us) [1] => Array ([name] => Microsoft Visual C++ 2008 Redistributable - x64 9.) [2] => Array ([name] => Microsoft Office 365 Business - en-us) [3] => Array ([name] => Microsoft Silverlight) [4] => Array ([name] => NVIDIA 3D Vision Driver 341.92) [5] => Array ([name] => NVIDIA Graphics Driver 341.92) [6] => Array ([name] => NVIDIA Update 10.4.0) [7] => Array ([name] => NVIDIA HD Audio Driver 1.3.30.1) [8] => Array ([name] => FortiClient)) 
+2

'implode (',', $ array)'? – Federkun

+2

google auch für 'sql nicht in' –

+1

Können Sie nicht die 2 Abfragen in einer einzigen Abfrage kombinieren? – Maximus2012

Antwort

1

Wenn Sie dies tun:

while($myrow = mysqli_fetch_assoc($result)) { 
    $array[] = $myrow; 
} 

Sie sind für jede Zeile die gesamte Zeile Array $array anhängt Sie holen. Sie können sie in

while($myrow = mysqli_fetch_assoc($result)) { 
    $array[] = $myrow['name']; 
} 

ändern, um nur den Namensstring anzufügen. Dann haben Sie ein Array von Strings anstelle eines Arrays von Arrays, und implode wird Ihnen die Ergebnisse geben, die Sie erwarten.

0

Sie können array_column (PHP 5.5+) verwenden, um die Werte zu erhalten Sie wollen:

print_r(array_column($array, 'name')); 
0

Sind Sie nur die Ausgabe für die zweite Abfrage und nichts anderes verwenden? Wenn ja, warum in einem Array speichern? Stattdessen könnten Sie so etwas wie

$namelist = ""; 
$mysql = "select distinct name from software"; 
$result = mysqli_query($conn, $mysql); 
while($myrow = mysqli_fetch_assoc($result)) { 
    $namelist .= mysqli_real_escape_string($conn, $myrow['name']).","; 
} 
$namelist = substr($namelist, 0, -1); 

tun Dann ist es direkt bereit für die zweite Abfrage, die eine brauchen NICHT IN:

select * from table where item NOT IN ($array) 

Hinweis, dass es besser Praxis vorbereitete Anweisungen über mysqli_real_escape_string zu verwenden, aber in In diesem Fall sollte es in Ordnung sein, da $namelist direkt aus Ihrer Datenbank kommt.