Ver Mensaje Individual
  #10 (permalink)  
Antiguo 27/03/2014, 16:54
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ¿insertar string o un null en base de datos con PHP?

Cita:
Iniciado por Gloton Ver Mensaje
Tu codigo para solucionar el problema es

Código PHP:
$nombre 'NULL';
$sql "INSERT INTO mitabla values ($nombre)"
Mira, cambia lo que tienes entre comillas por el nombre
Código PHP:
Ver original
  1. $nombre = 'gloton';
  2. $sql = "INSERT INTO mitabla values ($nombre)";
Quedaria
Código PHP:
Ver original
  1. INSERT INTO mitabla values (gloton)
y no se guardaria en mysql
Vamos a hacer una aclaración que ya deberías conocer: MySQL No es PHP, y PHP no es MySQL.
MySQL no entiende las variables de PHP, sencillamente porque jamás "dialogan" entre sí. Lo que hace PHP con las librerías es poner en un puerto determinado (3306 usualmente), un mensaje que MySQL "escucha". Ese mensaje es SQL puro.
MySQL luego devuelve en ese mismo puerto un conjunto de datos formateados como arrays que la librería de PHP interpreta para manipularlos. Pero jamás hay interacción directa entre ambas cosas.
¿Qué significa todo esto?
Que lo que haces en PHP es crear SQL, sólo SQL y nada más que SQL. Por consecuencia, las variables de PHP no existen para MySQL, sino que su contenido se toma para crear esa sentencia, y por consecuencia, la sentencia debe respetar la sintaxis de SQL.
Esto último, entre otras consideraciones: implica que:
- Las cadenas de texto deben estar entre apóstrofes.
- los números no deben estar entre apóstrofes (no son cadenas de texto)
- Los decimales se representan con puntos.
- Las fechas y horas se ponen entre apostrofos, respetando el formato de fechas y horas de MySQL.
- Las cláusulas de las sentencias no deben estar entre apóstrofes ni comillas.
- Los nombres de tablas pueden estar entre acentos agudos.
- Los operadores de todo tipo van sin apostrofos, comillas o acentos agudos.

Y en este último sentido, NULL, NOT, IN, AND, OR, etc., deben estar en la sentencia sin apostrofos .

¿Se entiende?
Estás embebiendo SQL en PHP, pero el SQL tiene sus propias reglas que debes cumplir si quieres que las sentencias se ejecuten sin errores.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)