PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anführungszeichen oder nicht?


tkuebler
28.01.2010, 08:56
Hi,

diesmal nur ne kleinigkeit
ich habe mehrere Selectanweisung für eine MYSQL Datenbank geschreiben und mir ist aufgefallen das man Variablen innerhalb des Textstrings unterschiedlich einbinden kann.

Als ich das versucht habe, stellte ich fest das nicht immer die ergebnisse gleich sein.

Ein Beispiel:

$sql = "SELECT *
FROM `Professoren`
WHERE `p_user` = '".$benutzer."' ";

Funktioniert einwandfrei!

$sql = "SELECT *
FROM `Professoren`
WHERE `p_user` = {$benutzer} ";

Funktioniert nicht!

aber bei einer anderen SQL anweisung
$sql = "SELECT * FROM `publikationen`
WHERE `p_id` = {$p_id} ";

Funktioniert es mit den {} klammern!

Liegt das vielleicht daran, das das eine eine Zahl, das andere ein Text string ist?
lg tobi

phpBuddy
28.01.2010, 19:40
Liegt das vielleicht daran, das das eine eine Zahl, das andere ein Text string ist?

So sieht's aus. Numerische Werte ohne Quotes, Strings müssen in Quotes. Was die geschweiften Klammern angeht -> Tutorial (http://www.phpbuddy.eu/anfuehrungszeichen-single-quotes-double-quotes.html)

Klaus
29.01.2010, 06:42
Hallo,

wenn ich nicht genau weiß warum was nicht geht versuche ich das
Problem in "kleinere Teile" zu Zerlegen.

Bei Variablen verwende ich var_dump um zu sehen wie der String
dann in PHP aussieht und bei MySQL geht's auf die Komandozeile.

Laß Dir doch mal von den 3 Beispielen je einen var_dump von $sql ausgeben.
Das $sql wird dann ja an die MySQL DB gesendet und bei Bsp. 2 fehlen die '' .

Ist vom Problem her so wie bei diesem Bsp.

mysql> select * from `personen` where `vorname`='klaus';
+----+---------+----------+
| ID | vorname | nachname |
+----+---------+----------+
| 1 | klaus | 2 |
+----+---------+----------+
1 row in set (0.00 sec)

mysql> select * from `personen` where `vorname`=klaus;
ERROR 1054 (42S22): Unknown column 'klaus' in 'where clause'
mysql> select * from `personen` where ID=1;
+----+---------+----------+
| ID | vorname | nachname |
+----+---------+----------+
| 1 | klaus | 2 |
+----+---------+----------+
1 row in set (0.00 sec)

MfG
Klaus