DB Abfrage mit Array vergleichen

  • Themenstarter Themenstarter starfoxfs
  • Beginndatum Beginndatum
S

starfoxfs

Hi zusammen,

Ich wollte eigentlich ein zusammengesetztes Array mit einer DB Select Abfrage vergleichen was aber komischerweise nicht funktioniert das Array wird ganz normal mit print_r oder var_dump angezeigt.

PHP:
$teilenr = array_merge($teile1, $teile2);

$sql3 = "SELECT * FROM ".$sqltab4." WHERE HPARTPLBLK = '$teilenr'";
$result3 = $db->query($sql3); 
while ($row = $db->fetcharray($result3)) 
{
.
.
.

Wo liegt hier der Fehler ? muss ich vll erst das Array zu einem String konvertieren mit Implode ?
 
Guten morgen,
Sollte so funktionieren:
PHP:
$teilenr = array_merge($teile1, $teile2);

$sql3 = "SELECT * FROM '".$sqltab4."' WHERE HPARTPLBLK = '".$teilenr."'";
$result3 = $db->query($sql3); 
while ($row = $db->fetcharray($result3)) 
{
.
.
.

Grüße ;)
 
PHP:
$teilezusammen = array_merge($teile1, $teile2);

$sql3 = "SELECT * FROM ".$sqltab4." WHERE HPARTPLBLK = '".$teilezusammen."'";
$result3 = $db->query($sql3); 
while ($row = $db->fetcharray($result3)) 
{

echo $row["HPARTPLBLK"];

}

Angezeigt wird leider nichts

Wenn ich das Array mit print_r ausgebe passt alles und sieht folgendermaßen aus:

Array ( [0] => B173416 [1] => B173425 [2] => B173427 [3] => B173429 [4] => B173430 [5] => B173431 [6] => B173436 [7] => B173442 [8] => B173448 [9] => B173449 [10] => B173418 [11] => B173419 [12] => B173420 [13] => B173421 [14] => B173422 [15] => B173423 [16] => B173424 [17] => B173432 [18] => B173433 [19] => B173434 [20] => B173435 [21] => B173437 [22] => B173438 [23] => B173439 [24] => B173440 [25] => B173441 [26] => B173443 [27] => B173444 [28] => B173445 [29] => B173446 [30] => B173447 [31] => B173450 [32] => B173451 [33] => B173452 [34] => B173453 [35] => B173454 [36] => B173455 [37] => B173456 [38] => B173457 [39] => B173458 [40] => B173459 [41] => B173460 )
 
Zuletzt bearbeitet von einem Moderator:
Moin,

Mysql hat keinen Datentyp ARRAY, solch ein Vergleich kann also über ein SELECT nicht funktionieren.
Der einzige Fall, in dem das klappen würde, wäre, wenn in HPARTPLBLK der String Array steht...das ist nämlich das, was in deinem SELECT als Klausel wirklich benutzt wird...ich glaube aber nicht, dass dies dir weiterhilft :-(

Was du machen kannst, ist, erstmal alle Datensätze holen, und dann vergleichen, ob die einzelnen Ergebnisse übereinstimmen.

Was steht da überhaupt in HPARTPLBLK ?
 
Zuletzt bearbeitet:
Also hab mal den Quellcode abgeändert sieht nun folgendermaßen aus:

PHP:
$teilezusammen = array_merge($teile1, $teile2);

$sql3 = "SELECT * FROM ".$sqltab4." WHERE HPARTPLBLK = '".$teilezusammen."'";
$result3 = $db->query($sql3)or die(mysql_error()); 
while ($row = $db->fetcharray($result3))
{
.
.
.

Die Datenbankverbindung besteht auch hab ich geprüft
 
Guten Morgen.

Wenn du ein Array aus PHP mit einer SQL-Tabelle "vergleichen" willst dann nimmst du die SQL-Bedingung:
Code:
WHERE `feldname` IN ('wert1', 'wert2', 'foo')

In PHP stellst du diese Liste innerhalb der Klammer Zusammen mit implode:
PHP:
$array = array('wert1', 'wert2', 'foo');
$comma_separated = implode(",", $array);

Der gesamte Query wäre demnach:
PHP:
"SELECT * FROM `tabelle` WHERE `feldname` IN (" . $comma_seperated . ")";

http://de.php.net/manual/de/function.implode.php
 
Zuletzt bearbeitet:
Zurück