Falls Kondition, WHERE blabla zu SQL Befehl fügen

Liebe Leute

Ich möchte, dass mein SQL Befehl grundsätzlich lautet: SELECT * FROM tabelle
Falls eine Kondition erfüllt ist, soll dazu ein WHERE hinzugefügt werden, der Befehl würde also nun lauten: SELECT * FROM tabelle WHERE eintrag = irgendwas

Probiert mit:

$befehl="SELECT \* FROM tabelle";
if(kondition){$befehl+="WHERE eintrag = irgendwas";}
$reponse = $datenbank-\> query($befehl);
while($daten= $reponse-\>fetch()) // Linie 47
{
 ...
}

Resultat: Fatal error: Call to a member function fetch() on a non-object in C:\Users…\index.php on line 47

Wie kann ich meinen Plan umsetzen?

lg
Kalsan

Hi,

ich kenne mich mit PHP nicht aus, aber das hier

$befehl=„SELECT * FROM tabelle“;

if(kondition){$befehl+=„WHERE eintrag = irgendwas“;}

liefert

"SELECT \* FROM tabelleWHERE eintrag = irgendwas"

.

Daher erster Vorschlag:

if(kondition){$befehl+=" WHERE eintrag = irgendwas";}
 |
 |
 hier Leerzeichen einfügen

Gruß,
KHK

Moin moin!

Liebe Leute

Ich möchte, dass mein SQL Befehl grundsätzlich lautet: SELECT
* FROM tabelle

Falls eine Kondition erfüllt ist, soll dazu ein WHERE
hinzugefügt werden, der Befehl würde also nun lauten: SELECT *
FROM tabelle WHERE eintrag = irgendwas

Probiert mit:

$befehl=„SELECT * FROM tabelle“;

if(kondition){$befehl+=„WHERE eintrag = irgendwas“;}

An dieser Stelle wurde ja das fehlende Leerzeichen bereits angedeutet.

$reponse = $datenbank-> query($befehl);

while($daten= $reponse->fetch()) // Linie 47

Die Fehlermeldung bezieht sich auf $response. In dieser Variablen steckt kein Objekt und somit ist es auch nicht möglich mittels des Aufrufs ->fetch() auf die Methode zuzugreifen, weil diese nicht existiert. Ohne deine Datenbank-Klasse näher zu kennen würde ich also vermuten, dass es so aussehen müsste:

while ($daten = $datenbank->fetch ($response))

Ich gehe nämlich davon aus, dass die Methode fetch im Datenbank-Objekt vorhanden ist und als Übergabe einen Response erwartet. DIeser Response steckt in $response und ist vom Typ RESOURCE, wie es üblicherweise von mysql_query zurückgegeben wird.

{

}

Resultat: Fatal error: Call to a member function fetch() on a
non-object in C:\Users…\index.php on line 47

Wie kann ich meinen Plan umsetzen?

lg

Kalsan

Ich hoffe, dass dir das hilft.

MfG
Lutz

Salü

Das war meine erste Korrektur, ich habe einfach vergessen, sie hier einzufügen, sorry. Da ist eine Leertaste.

lg
Kalsan

Der Operator um in PHP Strings zu verknüpfen lautet nich „+“ sonder „.“:

$befehl .= " WHERE eintrag = irgendwas";

Die neueste Antwort hat mir geholfen.
Danke!

Perfekt! Das war der Fehler.
Danke.

1 Like