参数号无效:参数未定义PDO插入语句

时间:2017-04-19 15:26:07

标签: php pdo insert

我的PDO INSERT有问题。

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";
}

我找不到我的问题。

数据库是这样的:

#   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        

1 个答案:

答案 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
        )
    );