Was ist an der SQL-Abfrage falsch?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Boecki91
Ehemaliges Teammitglied
Beiträge: 4744
Registriert: 18.06.2006 15:21

Beitrag von Boecki91 »

Vielelicht wäre es ganz praktisch erst einmal zu wissen ob es um phpBB2 oder 3 oder noch was ganz anderes geht :D

Der Code von Max sieht nach phpBB2 aus
Der Code von disler ist "Normales" PHP, es werden keine Funktionen oder Klassen von phpBB verwendet.
Wenn ich jetzt behaupte das es ein phpBB3 ist,
haben wir hier 3 Meinungen.

Zur phpBB2-Lösung:

Code: Alles auswählen

$sql = "MYSQL_QUERY BLA BLA BLA";
if( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Fehlermeldungen sind immer sehr aufschlussreich', '', __LINE__, __FILE__, $sql);
}

$variable_mit_daten_die_ich_spaeter_noch_haben_will = array();
while ($row = $db->sql_fetchrow($result))
{
	$variable_mit_daten_die_ich_spaeter_noch_haben_will[] = $row;
}
$db->sql_freeresult($result);
Der/die/das :-? Array müsste später so aufgebaut sein:

$variable_mit_daten_die_ich_spaeter_noch_haben_will[$ZEILE][$SPALTEN_NAMEN]


Deine Variable $verip dürfte wenn ich das richtig sehe nur die zuletzt abgefragte IP beinhalten, schließlich wird sie bei jedem Schleifendurchlauf überschreiben.
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
Max
Mitglied
Beiträge: 1051
Registriert: 20.02.2003 22:22

Beitrag von Max »

Boecki91 hat geschrieben:Deine Variable $verip dürfte wenn ich das richtig sehe nur die zuletzt abgefragte IP beinhalten, ...
So ist es. bei der IP ist mir das egal, da sie eh nach der IP aussortiert wird.

Wo es mir wichtiger ist, eine Liste in einer Variable zu haben, ist die Objekt-ID

Ich hatte das inzwischen auch so hingebogen:

Code: Alles auswählen

$sql = "Select * FROM " . $table_prefix . "objekt_ip where ip = '".$uip."'"; 
   if ( !($query_result = $db->sql_query($sql)) ) 
   { 
   message_die(GENERAL_ERROR, 'Keine IP-information', '', __LINE__, __FILE__, $sql); 
   } 
   $result = $db->sql_query($sql);  
   while ($row = mysql_fetch_array($result))  
   {
      $verip = $row['ip'];  
      $verip_objekt = $row['objekt_id'];   
   } 
Nun fehlt mir zu meinem Glück nur noch, dass $verip_objekt immer eine Liste beinhaltet ála 12,20,67,90 usw.
Die sollen nachher Ausschlußkriterien bei der Auswahl von neuen Objekten sein, um Objekte, die noch in der Tabelle unter der IP liegen, nicht anzuzeigen.

Achja, es handelt sich um ein phpBB2


Gruß Max
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17476
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

So mal probiert?

Code: Alles auswählen

$sql = '	Select * 
			FROM ' . $table_prefix . 'objekt_ip 
			WHERE ip = ' .$uip; 
if ( !($query_result = $db->sql_query($sql)) ) 
{ 
	message_die(GENERAL_ERROR, 'Keine IP-information', '', __LINE__, __FILE__, $sql); 
} 
$result = $db->sql_query($sql);  

$verip = array();
$verip_objekt = array();

while ($row = mysql_fetch_array($result))  
{ 
	$verip[] = $row['ip'];  
	$verip_objekt[] = $row['objekt_id'];    
}
Max
Mitglied
Beiträge: 1051
Registriert: 20.02.2003 22:22

Beitrag von Max »

Hallo,


so ähnlich hatte das schon, leider bringt das von mir, wie das von Dir nur die Ausgabe "Array"

Das heißt, wenn ich $verip_objekt irgendwo verwende (wie z.B. als Ausschlußkriterium), steht z.B. in der DB-Abfrage NOT IN (Array) - das geht natürlich nicht.
Wenn ich das nur als echo ausgeben lasse, erscheint da auch nur das Wort.

Also hänge ich da irgendwo fest und kapiere nicht, wo/warum.



Gruß Max
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17476
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Du hast ja nicht gesagt, das Du kein Array brauchst ;-)

Dann mach doch beim Vergleich ein " implode " ;-)

Code: Alles auswählen

NOT IN (' . implode("," $verip_objekt ) .')
Siehe auch --> http://de2.php.net/manual/de/function.implode.php


BTW: Um den Inhalt eines Arrays testweise auszugeben verwendet man z.B.:

Code: Alles auswählen

echo "<pre>"; print_r($array_variablen_name); echo "</pre>";
oder

Code: Alles auswählen

var_dump($array_variablen_name);
http://de2.php.net/manual/de/function.var-dump.php
Max
Mitglied
Beiträge: 1051
Registriert: 20.02.2003 22:22

Beitrag von Max »

Hallo,


besten Dank, das war der fehlende Impuls :-)

Nun klappt es zu 95% nach meinen Vorstellungen, die restlichen 5% Abweichung sind nur noch Feinschliff.




Gruß Max
Antworten

Zurück zu „Coding & Technik“