2017-04-19 73 views
0

我的PDO插入有問題。無效的參數號:參數未定義PDO插入語句

error_reporting(E_ALL); 
error_reporting(-1); 
include "../includes/php/db.php"; 

$name = htmlentities($_POST['name']); 
$stadt = htmlentities($_POST['stadt']); 
$postleitzahl = htmlentities($_POST['postleitzahl']); 
$strasse = htmlentities($_POST['straße']); 
$hausnummer = htmlentities($_POST['hausnummer']); 
$created_at = date("Y-m-d H:i:s"); 
$updated_at = date("Y-m-d H:i:s"); 

$stmt = $dbh->prepare('INSERT INTO kundens (name, stadt, postleitzahl, straße, hausnummer, created_at, updated_at)VALUES(:name, :stadt, :postleitzahl, :strasse, :hausnummer, :created_at, :updated_at)'); 

var_dump($name, $stadt, $postleitzahl, $strasse, $hausnummer, $created_at, $updated_at); 
try { 
    $stmt->execute(array($name, $stadt, $postleitzahl, $strasse, $hausnummer, $created_at, $updated_at)); 
} 
catch (PDOException $e) { 
    echo 'Insert Error: ' . $e->getMessage() . "\n"; 
} 

我找不到我的問題。

的DB是這樣的:

# Name    Typ Kollation Attribute    Null Standard Kommentare  Extra 
1 idPrimärschlüssel int(10)   UNSIGNED    Nein kein(e)  AUTO_INCREMENT 
2 name    varchar(255) utf8mb4_unicode_ci  Nein kein(e)  
3 stadt    varchar(255) utf8mb4_unicode_ci  Nein kein(e)  
4 postleitzahl  int(11)         Nein kein(e)  
5 straße    varchar(255) utf8mb4_unicode_ci  Nein kein(e)  
6 hausnummer   int(11)         Nein kein(e)  
7 created_at   timestamp        Ja  NULL   
8 updated_at   timestamp        Ja  NULL   
+0

如果您不使用帶有bindParam()的名稱,最好使用'?'而不是命名參數':abc'。 http://php.net/manual/en/pdostatement.bindparam.php – JustOnUnderMillions

+0

我想這個可以擺動任何一種方式 –

回答

1

既然你在使用命名參數而不是?參數你必須相應地命名你的數組鍵。

$stmt = $dbh->prepare('INSERT INTO kundens (name, stadt, postleitzahl, straße, hausnummer, created_at, updated_at)VALUES(:name, :stadt, :postleitzahl, :strasse, :hausnummer, :created_at, :updated_at)'); 

try { 
    $stmt->execute(
     array(
      'name' => $name, 
      'stadt' => $stadt, 
      'postleitzahl' => $postleitzahl, 
      'strasse' => $strasse, 
      'hausnummer' => $hausnummer, 
      'created_at' => $created_at, 
      'updated_at' => $updated_at 
     ) 
    ); 
+0

Aaaah omfg謝謝...所以愚蠢>。<它的工作 – n1ghty

+0

確定它不是:O它插入一個和從那以後它不發出任何單個錯誤,但不插入任何東西 – n1ghty

+0

如果你沒有收到錯誤而且沒有插入,則有兩個可能的問題。 1)問題在其他地方2)PDO不處於異常模式,所以錯誤不會被拋出 – Augwa

相關問題