Tengo columnas cuyos nombres tienen la estructura nameUser.Name
, pero tengo problemas para actualizarlos. He intentado algunas posibilidades:Actualización de una columna MySQL que contiene punto (.) En su nombre
// Ideally, I'd like to do this (since the User.Name is 'dynamic', ie, it depends
// on who is logged in):
$userLogged = 'Some.User';
$columnName = 'name' . $userLogged;
mysql_query("UPDATE Industries SET '$columnName'='$name' WHERE id='$id'");
// Another try:
mysql_query("UPDATE Industries SET $columnName='$name' WHERE id='$id'");
// Alternatively, if the above cannot be achieved:
mysql_query("UPDATE Industries SET 'nameSome.User'='$name' WHERE id='$id'");
// Yet another try:
mysql_query("UPDATE Industries SET nameSome.User='$name' WHERE id='$id'");
Ninguno de los anteriores funciona, sin embargo. ¿Por qué?
En una nota lateral, tenga cuidado de que no termine vulnerable a [ataques de inyección SQL] (http://en.wikipedia.org/wiki/SQL_injection#Incorrectly_filtered_escape_characters). – Jeroen
Para su problema, probablemente necesite citar el nombre de la columna, la respuesta probablemente se encuentre en [esta documentación de MySQL] (http://dev.mysql.com/doc/refman/5.5/en/identifiers.html), a primera vista, diría que MySQL requiere backticks (o comillas dobles si se permite la variante ANSI) alrededor de nombres de columnas con caracteres de época. – Jeroen