PHP Coding Standard

Logo: PHP
26. Regel 23: INSERT-Anweisungen müssen die einzelnen Spalten für die VALUES-Klausel enthalten

Wenn sich ein Projekt weiterentwickelt, werden oft Änderungen an der Datenbank notwendig. Um zu verhindern, dass jeder INSERT fehlschlägt, werden die Spalten explizit ausgewiesen und über VALUES dann mit Inhalten belegt.

Ungültig
   $insert_user_login = 'INSERT INTO mysql.user
   VALUES ("localhost", "' . $mysql_user . '", PASSWORD("top_secret"))';

Wenn die Tabelle erweitert wird und dann mehr als drei Spalten enthält, gibt MySQL den Fehler "Column count doesn't match value count at row 1" zurück. Deswegen sollte man anders vorgehen.

Gültig
   $insert_user_login = 'INSERT INTO mysql.user
   (Host, User, Password)
   VALUES ("localhost", "' . $mysql_user . '", PASSWORD("top_secret"))';

Wie man sehen kann, werden genau die drei Spalten angegeben, die befüllt werden sollen. Warum man einen String in PHP mit Hochkommata definieren sollte, wird in den Empfehlungen erklärt.