Insertar un campo de tipo DATE en MySQL desde una consulta preparada en PHP

publicado por: Anonymous

Buenas. Tengo un problema a la hora de insertar una fecha en una tabla MySQL desde PHP con una consulta preparada. Tengo el siguiente bloque de código:

$query = "INSERT INTO ARTICULOS (CODIGO, FECHA) VALUES (?, ?)";
$resultado = mysqli_prepare ($conexion, $query);
if ($resultado == false)
{
     echo "Error fatal";
     mysqli_close($conexion);
     exit();
}
$codigo = "5555";

// Cadena con la fecha
$cadena_fecha_mysql = "2015-08-24";
$objeto_DateTime = date_create_from_format('Y-m-d', $cadena_fecha_mysql);

$ok = mysqli_stmt_bind_param ($resultado, "ss", $codigo, 
                              $objeto_DateTime);
if ($ok == true)
{
    echo "Estoy en 1<br>";
    $ok = mysqli_stmt_execute($resultado);
    if ($ok == true)
    {
        echo "Estoy en 2<br>";
    }
    else 
    {
        $error = mysqli_errno($conexion);
        echo "Error $error en la instruccion $query<br>";
        echo "2 ha fallado<br>";
    }
}
else 
{
    echo "1 ha fallado<br>";
}

mysqli_stmt_close($resultado);
mysqli_close($conexion);   

Se imprime:
Estoy en 1

Y salta uan excepción en la linea de mysqli_stmt_execute:

Catchable fatal error: Object of class DateTime could not be converted
to string

He probado ya muchas cosas y no me funciona nada.
El campo de la tabla ARTICULOS es de tipo DATE (ni DATETIME ni TIMESTAMP)

solución

Que yo recuerde podrías mandar el String directo a la consulta, pero de preferencia ocupa comillas simples.

Por Otro lado el formato que acepta MySQL de fecha es YYYY-mm-dd, por lo tanto tu función debería ser:

date('YYYY-mm-dd', $cadena_fecha_mysql);
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *