2012-04-11 5 views
4

Dieses Problem macht mich verrückt, ich habe alles versucht. Gibt mir keinen Fehler, aber es fügt auch nichts in die Datenbank ein. Datenbankverbindung ist gut, und es sollte keine Tippfehler geben. Bitte werfen Sie einen Blick und sehen, ob Sie das Problem finden können:PHP PDO vorbereitet einfügen - fügt keine Daten und zeigen keine Fehler

$err = array(); 

if (isset($_POST['submit'])) { 

    $ip = gethostbyname($_SERVER['REMOTE_ADDR']); 
    $date = "2012-02-02 02:02:02"; //Example 
    $uploader_name = $_POST['uploader_name']; 

    // Validation happens here... 


    if (empty($err)) { 

     $host = "host"; 
     $dbname = "db"; 
     $user = "user"; 
     $pass = "pass"; 

     try { 
      $dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 

      $sql = "INSERT INTO `table` (`ip`, `date`, `uploader_name`) 
        VALUES (:ip, :date, :uploader_name)"; 
      $stmt = $dbh->prepare($sql); 

      # the data we want to insert 
      $params = array(
       ':ip' => $ip, 
       ':date' => $date, 
       ':uploader_name' => $uploader_name 
      ); 


      $stmt->execute($params); 

      $dbh = null; 

     } catch(PDOException $pe) { 
      die('SQL Error'); 
     } 


     if (empty($err)) { 
      $err[] = "Success!"; 
     } 
    } 

} 

Auch ich bin sicher, es wird auf dem Einsatzteil, weil ich die ‚Erfolg‘ Meldung.

Antwort

10

Verwenden Sie diesen Code, um Ihre Anweisung auszuführen. Wenn es einen nicht schwerwiegenden Fehler gibt, wird es angezeigt.

Fast sicher ist Ihr Datenbankbenutzer nicht berechtigt, die Anweisung auszuführen, die Sie für die Tabelle, gegen die Sie versuchen, auszuführen.

+0

Thank you !! Das Problem war, dass einige der Werte NULL waren. Aber es sind nur einige der Felder, die benötigt werden, wie füge ich leere Werte in diese Felder ein? – 2by

+0

Sie müssten für jede Eingabe, die Sie der vorbereiteten Anweisung hinzufügen, einen Bestätigungscode bereitstellen. if ($ myVar === nulll) {$ myVar = '';} oder so. –

+0

2 Jahre später bist du bomben – bryan

2

Verwenden Sie Auto-Commit? Wenn nicht, müssen Sie möglicherweise Ihre Abfrage in eine Transaktion umbrechen.

try 
{ 
    $dbh->beginTransaction(); 
    // your code. 
    $dbh->commit(); 
} 
catch(PDOException $pe) 
{ 
    $dbh->rollback(); 
    die($pe->getMessage()); 
} 

http://php.net/manual/en/pdo.transactions.php

Verwandte Themen