Rolf B: PHP PDO Bind Parameters Wo sinnvoll?

Beitrag lesen

Hallo MB,

...allein schon durch die Backticks

Moment. Die Backticks haben nichts mit Typendurcheinander zu tun, sondern damit, Namen bilden zu können die von der SQL Syntax eigentlich ausgeschlossen sind.

SELECT WHERE FROM GROUP BY WHERE SELECT * FROM foo_tab > 0

sieht äußerst merkwürdig aus und wird krachend abgewiesen, aber hier ist das CREATE TABLE Statement. Es funktioniert! Wie darauf eine Query machen?

CREATE TABLE `GROUP BY` (
  `WHERE` int(11) NOT NULL,
  `HAVING` int(11) DEFAULT NULL,
  `SELECT * FROM foo_tab` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Backticks to the rescue:

SELECT `WHERE` FROM `GROUP BY` WHERE `SELECT * FROM foo_tab` > 0

Dass das geht, heißt nicht, dass man sowas im real life tun sollte.

Und dann schrieb ich leichtfertig dies:

ist das gleiche wie

Verstehe das nicht falsch, das zweitgenannte Statement ist nicht exakt das Gleiche. Es ist das, was im SQL Server nach Einsetzen der Parameterwerte entsteht. Insofern sind diese beiden Queries vom Ergebnis her gleich.

Du schriebst dann noch

1 kann bool, int, float, string und vermutlich noch weitere Datentypen

Nein. Definitiv nein. Du möchtest doch exakt sein. Unterscheide dazwischen, was ein Wert ist und in was er automatisch konvertiert werden kann. In PHP ist 1 ist ein int und nichts anderes. TRUE ist ein bool. 1.0 ist ein float und '1' ist ein String. In MYSQL ist 1 ein int. Den SQL Typ BOOL gibt's nicht, allerdings stellt MYSQL den Ergebnis eines Vergleichs als Integerwert 1 oder 0 dar.

Welche Typen es in SQL und PHP gibt, ist in den jeweiligen Handbüchern genau aufgeführt. Dort gibt es auch Beispiele für die Notationen, mit denen man Literale der diversen Typen aufschreibt.

Rolf

--
sumpsi - posui - clusi