2017-04-19 72 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

相关问题