2017-06-07 4 views
-1

J'ai un formulaire d'entrée avec une déclaration prépaired qui devrait entrer dans sql et imprimer l'entrée mais tout ce que je reçois est une page blanche avec l'adresse php d'entrée. Ai-je manqué quelque chose? J'ai changé le code ci-dessous mais tout ce qui apparaît est NULL. Le champ de date est de type sql date et la chaîne que j'ai saisie pour le tester est "2008-11-11", sans les guillemets bien sûr.J'ai un formulaire d'entrée avec une instruction prépaired qui devrait entrer dans sql et imprimer l'entrée mais tout ce que je reçois est NULL imprimé sur la page

 <?php 
function shutdown(){ 
    var_dump(error_get_last()); 
} 

register_shutdown_function('shutdown'); 
session_start(); 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 
include("dbconfig.php"); 
$errorvar = ""; 
if (isset($_POST['submit'])) { 
    if (empty($_POST['Title']) || empty($_POST["Date"]) || empty($_POST["Country"]) || empty($_POST["bloguser"]) || empty($_POST["Blogentry"])) { 
     $errorvar = "You dun gooffed"; 
     echo $errorvar; 
    } else { 
     //defining and injection protecting data 
     $title = $_POST['Title']; 
     $date = $_POST['Date']; 
     $country = $_POST['Country']; 
     $bloguser = $_POST['bloguser']; 
     $blogentry = $_POST['Blogentry']; 

    $stmt = $mysqli->prepare("INSERT INTO blogs (BlogName,blogDate,country,bloguser,Blogdata) VALUES (?,?,?,?,?)"); 

     $stmt->bind_param('sssss', $title, $date, $country, $bloguser, $blogentry); 

     if ($stmt->execute()) { 
      echo "New records created successfully"; 
      printf("%d Row inserted.\n", $stmt->affected_rows); 
      header("location:index.php"); 
     } else { 
     header("location:index.php"); 
      echo $conn->error; 
     } 
     $stmt->close(); 
     $conn->close(); 
     header("location:index.php"); 
    } 
} 
?> 

Le formulaire HTML est inférieure à

<fieldset style="width:45%"><legend>Blog data entry</legend> 
     <form name="Blogentry" action="Inputform.php" method="POST"> 
      <label for="Title">Title: </label> 
      <input type="text" name="Title" value="" size="40"/><br> 
      <label for="Date">Date: </label> 
      <input type="text" name="Date" value="" size="40"/><br> 
      <label for="Country">Country: </label> 
      <input type="text" name="Country" value="" size="40"/><br> 
      <label for="bloguser">User: </label> 
      <input type="text" name="bloguser" value="" size="40"/><br> 
      <label for="Blogentry">Blog: </label> 
      <textarea name="Blogentry" rows="4" cols="20"> 
      </textarea><br> 
      <input id="button" type="submit" name="submitblog" value="submit-blog"> 
     </form> 
      </fieldset> 
    </body> 
</html> 
+0

mysqli_real_escape_string retourne vide si la connexion est mysqli pas valide, et les façons dont vous l'aide de l'instruction préparée est incorrecte –

+0

Peut-on jeter un oeil à la forme? – Arthur

+0

Copie possible de [l'écran blanc de la mort de PHP] (https://stackoverflow.com/questions/1475297/phps-white-screen-of-death) – CBroe

Répondre

0

permettent les rapports d'erreur: ajouter au-dessus de votre script

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

puis utiliser les instructions préparées bonne. En ce qui concerne votre script là aucun paramètre que vous liez,

<?php 
session_start(); 
include("dbconfig.php"); 
$errorvar = ""; 
if (isset($_POST['submit'])) { 
    if (empty($_POST['Title']) || empty($_POST["Date"]) || empty($_POST["Country"]) || empty($_POST["bloguser"]) || empty($_POST["Blogentry"])) { 
     $errorvar = "You dun gooffed"; 
     echo $errorvar; 
    } else { 
     //defining and injection protecting data 
     $title  = $_POST['Title']; 
     $date  = $_POST['Date']; 
     $country = $_POST['Country']; 
     $bloguser = $_POST['bloguser']; 
     $blogentry = $_POST['Blogentry']; 

     $stmt = $conn->prepare("INSERT INTO blogs (BlogName,blogDate,country,bloguser,Blogdata) VALUES (?,?,?,?,?)"); 

     $stmt->bind_param("sssss", $title, $date, $country, $bloguser, $blogentry); 

     if ($stmt->execute()) { 
      echo "New records created successfully"; 
      printf("%d Row inserted.\n", $stmt->affected_rows); 
      header("location:index.php"); 

     } else { 

      echo $conn->error; 
     } 
     $stmt->close(); 
     $conn->close(); 
    } 
} 
?> 
0

vous n'avez pas besoin d'échapper à quoi que ce soit puisque vous utilisez bind tomber de sorte que le mysqli_real_escape

vous avez des erreurs dans votre requête que je indiquent dans le code ci-dessous

$stmt = $mysqli->prepare("INSERT INTO blogs (BlogName,blogDate,country,bloguser,Blogdata) VALUES (?,?,?,?,?)"); 
    // question marks will be replaced with data - use question marks! 
     $stmt->bind_param('sssss', $title, $date, $country, $bloguser, $blogentry); 
    // number of bound parameters should match number and order of question marks 

     $stmt->execute();