Creé este script para insertar algunos datos de PHP en MySQL, pero no funciona y no sé por qué.

if (isset($_SESSION['userSession'])!="") {
  $session_created=1;
  $session_query = "SELECT * FROM users WHERE user_id=".$_SESSION['userSession'];
  $session_query_result = $DBcon->query($session_query);
  $user_row=$session_query_result->fetch_array();
}
  if(isset($_POST['create_post_button'])){
    $post_name = $DBcon->real_escape_string(strip_tags($_POST['post_title']));
    $post_content = $DBcon->real_escape_string(strip_tags($_POST['post_content']));
    date_default_timezone_set('Europe/Athens');
    $post_date=date("Y-m-d h:i:sa");
    $post_categ_id = $DBcon->real_escape_string(strip_tags($_POST['post_category']));
    $post_creator = $user_row['user_name'];
    $pass_flag=0;
    $error_msg_cp = "Posted!";
      $create_post_query = "INSERT INTO posts(post_name,post_content,post_date,
        post_categ_id,post_user_name) VALUES ('$post_name','$post_content','$post_date','
        $post_categ_id','$post_creator')";
        echo "<br><br><br><br>".$create_post_query;
        if($DBcon->query($create_post_query)){
          $error_msg_cp="Error, pug!";
        }
        echo $error_msg_cp;
  }

¡Gracias! Editar: El resultado de este código es: ingrese la descripción de la imagen aquí Incluso con ini_set('display_errors', 'stdout'); no muestra el error ...

Esta es la estructura de la tabla de publicaciones en MySQL: ingrese la descripción de la imagen aquí

1
user5956712 24 feb. 2018 a las 11:07

2 respuestas

La mejor respuesta

Parece tener una nueva línea en su campo de números enteros.

Cambie su consulta de esta manera. La comilla simple alrededor de '$post_categ_id' ha cambiado.

$create_post_query = "INSERT INTO posts(post_name,post_content,post_date,
  post_categ_id,post_user_name)
  VALUES ('$post_name','$post_content','$post_date',
          '$post_categ_id','$post_creator')";
  echo "<br><br><br><br>".$create_post_query;
  if (!$DBcon->query($create_post_query)){
      $error_msg_cp="Error, pug!";
  }

Nota: le sugiero que lea esta publicación Cómo ¿puedo evitar la inyección de SQL en PHP? para evitar sus consultas contra inyecciones de SQL.

1
Syscall 24 feb. 2018 a las 08:50

Cambie su consulta de inserción de la siguiente manera, use '{$variable}' en lugar de '$variabe'

$create_post_query = "INSERT INTO posts(post_name,post_content,post_date,
        post_categ_id,post_user_name) VALUES ('{$post_name}','{$post_content}','{$post_date}','
        {$post_categ_id}','{$post_creator}')";
-1
Jayasanka Weerasinghe 24 feb. 2018 a las 08:15