von subjective |
Wie du das am besten machst, kann man so nicht sagen. Dies mußt du entscheiden, da nur du dein gesamtes Projekt, sowie das Konzept dahinter kennst.
Am besten schaust du dir mal den Abschnitt zu MySQL-Fehlern in der Q-Net FAQ an.
Bei einer konrekten SQL-Query können wir eventuell helfen. (Wenn du uns die Fehlermeldung des MYSQL-Servers sagst.)
Einen Fehler sehe ich allerdings in fillSelect - du gibst nichts per return zurück, sondern gibst die erzeugten Strings nur aus. Im Quellcode-Stück des Anfangsbeitrags nutzt du jedoch eine Rückgabe. |
von elster |
"Hintergrund":
In der Seite liegt ein 1. "Haupt-SELECT" mit
einem "Start"-WHERE-Teil, der dann noch durch einen
2. "WHERE"-Teil (hier $q1) ergänzt wird.
Hier würde - wenn "pic" -
eine Abfrage nach $string erfolgen ($q). Die
wird in der Funktion fillselect ausgewertet bzw.
soll diese eine Reihe ID´s "drucken", als Teil
der Produktion des 2. WHERE-Teils ($q1).
mmh - ok?
Die beiden Var.-namen sind richtig (habe einige
ähnlich strukturierte Abfragen laufen, allerdings
ohne Funktion, mit deren Einbettung ich eben jetzt
Schwierigkeiten habe).
Den query-String (bzw.2. WHERE-Teil) habe ich ja oben ausgegeben
und der ist eben "verdreht" (ohne Fehlermeldung).
Was mach ich da am Besten??????
Die Funktion im Ganzen sieht so aus:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15: |
function fillselect($query, $name, $operator) {
$result = mysql_query($query) or die($query.'<br> Fehler: '.mysql_error());
$nextRow = FALSE;
while ($array=mysql_fetch_array($result)) {
if ($nextRow)
{
print " $operator ";
}
$nextRow = TRUE;
$wert1 = sprintf ($array[$name]);
print "'".$wert1."'"; }
;
}
|
Gruß, Jörg |
von subjective |
fillselect ist eine PHP-Funktion, welche Text erzeugt, der in die SQL-Query eingefügt wird. Du nutzt allerdings 2 verschiedene Variablennamen. Das sieht irgendwie verkehrt aus. Du solltest einfach mal die erzeugte SQL-Query ausgeben, bevor du sie an den MYSQL-Server schickst. Übrigens kannst du mit mysql_error() auch Details zum Fehler abfragen. |
von elster |
Hallo,
könnte mir mal jemand sagen, wie ich die
Funktion richtig setze?
Ich komme immer nur auf:
'383' OR '384' OR '386' OR f11 LIKE ()
letzteres, OR f11 LIKE (),
muß aber natürlich vorne stehen.
Ich habe schon verschiedenes probiert, hin und her gerückt,
Apostrophe, Klammern, als array gesetzt, aber komme nicht drauf :-|
Scheinbar hat die fillselect-Funktion irgend eine Priorität?
1:
2:
3:
4:
5:
6:
7:
8:
9: |
if (@$pic != FALSE) {
$q = "SELECT f11, f22 FROM $table WHERE f22 LIKE '%$string%'";
$q1 = " OR f11 LIKE (";
$q1 .= fillselect($q, "f11", "OR");
$q1 .= ")";
}
echo $qort5."<br>";
|
Vielen Dank,
Grüße, Jörg |
|