variable in mysql befehl integrieren

petschni

Mitglied
Hallo,

folgenen Script habe ich:


PHP:
include ("config.php"); 

mysql_connect ($db_server, $db_user, $db_passwort); 
mysql_select_db ($db_name); 
//$eingabe = 'bra'

$sql = 'select * from pgost_betreuerdatenbank where 1 AND Komitee LIKE \'bra\' ';


$result = mysql_query($sql);

// hier kommt jetzt die Ausgabe des Suchergebnisses
   for($x=0;$x<mysql_num_rows($result);$x++) {    
    $str_1 = mysql_result($result,$x, "pgost_betreuerdatenbank.id");    
	 echo "id: $str_1 <br>";    
	  $str_2 = mysql_result($result,$x,1);
	      echo "gruppe: $str_2 <br><br>"; 
		  
		  }
 
?>

Nun würde ich aber gerne das \'bra\' durch eine Variable ersetzten. Ich hätte gedacht, dass es dann
PHP:
$sql = 'select * from pgost_betreuerdatenbank where 1 AND Komitee LIKE '$bra' ';
heißen muss, aber da sagt er mir "parse error "

viele grüße und danke

peter
 
Hallo!
Der Fehler ergibt sich daraus, dass du den einfachen "Hochkomma" (') statt die Anführungsstriche (") verwendet hast.
Mit normalen Anführungsstrichen sollte es funktionieren:



PHP:
$sql = "select * from pgost_betreuerdatenbank where 1 AND Komitee LIKE '$bra' ";

Oder du nimmst diese Syntax:

PHP:
$sql = 'select * from pgost_betreuerdatenbank where 1 AND Komitee LIKE \\\''.$bra.'\\\'';

Das wäre mir aber zu umständlich und poste ich nur, damit nicht irgendein Besserwisser das meint nachreichen zu müssen! :rolleyes: :p :-) ;)

Edit:
Ich hab' grad festgestellt, dass man, wenn man ein (\) im PHP-Code anzeigen lassen will "\\" schreiben muss.
NERV!

Edit 2:
Selbst das klappt nicht richtig! Ich musste jetzt "\\\\\''.$bra.'\\\\\'';" schreiben - klappt aber immer noch nicht!

Edit 3:
Ich geb's auf! Wieviel soll man davon denn Escapen! So'n mist!
Das soll natürlich so aussehen:

$sql = 'select * from pgost_betreuerdatenbank where 1 AND Komitee LIKE \ ''.$bra.' \ '';
 
Zuletzt bearbeitet:
Original geschrieben von petschni
Nun würde ich aber gerne das \'bra\' durch eine Variable ersetzten. Ich hätte gedacht, dass es dann
PHP:
$sql = 'select * from pgost_betreuerdatenbank where 1 AND Komitee LIKE '$bra' ';

heißen muss, aber da sagt er mir "parse error "
Bitte, tue Dir selbst einen Gefallen, und lerne die PHP-Basics. Das soll jetzt NICHT böse gemeint sein, aber da ich auch Deinen anderen Thread gelesen hab, musste ich das mal loswerden ;)

Zu Deinem Problem:

Die SQL-Syntax is total falsch. Was soll die 1 da mitten im Query? Da fehlt eine Spalte, dessen Wert 1 sein soll. Außerdem wirst Du, wenn Du den LIKE Befehl so anwedest, keinen Erfolg haben. Du musst Angeben, wo der Suchbegriff stehen soll. Dazu verwendest Du Platzhalter, enweder für den Anfang des Wortes oder für das Ende. Anfang und Ende kann man natürlich auch angeben:

PHP:
$sql = 'SELECT * FROM pgost_betreuerdatenbank WHERE spalte = 1 AND Komitee LIKE "%'.$bra.'%"';
 
ja du hast ja Recht - merke ich selber - aber ich habe da halt gerade dieses kleine Projekt und dachte ich könnte da so ne Art Quereinstieg machen - habe auch nen ganz ordentliches Buch zu Hause, aber da bin ich jetzt noch ne ganz Weile nicht.

Also wie ich auf den Befehl gekommen bin :
Ich habe den Befehle einfach in phpmyadmin per klicken ausgeführt und mir dann das sql Kommando in php umwandeln lassen.
 
Hallo,

ich habe jetzt die Scriptzeile von dir eingebunden und mein Script schaut jetzt so aus:

PHP:
include ("config.php"); 

mysql_connect ($db_server, $db_user, $db_passwort); 
mysql_select_db ($db_name); 
$eingabe = 'bra'

$sql = 'SELECT * FROM pgost_betreuerdatenbank WHERE spalte = 1 AND Komitee LIKE "%'.$eingabe.'%"'; //Zeile 21


$result = mysql_query($sql);

// hier kommt jetzt die Ausgabe des Suchergebnisses
   for($x=0;$x<mysql_num_rows($result);$x++) {    
    $str_1 = mysql_result($result,$x, "pgost_betreuerdatenbank.id");    
	 echo "id: $str_1 <br>";    
	  $str_2 = mysql_result($result,$x,1);
	      echo "gruppe: $str_2 <br><br>"; 
		  
		  }
 
?>

Ich bekomme aber immer noch die Meldung, dass es einen Parseerror geben würde:
Parse error: parse error in /home/sites/site106/web/php/suche2.php on line 21

viele grüße
peter
 
Zurück