【问题标题】:Invalid parameter number: parameter was not defined PDO Insert Statement参数号无效:参数未定义 PDO 插入语句
【发布时间】:2017-04-19 15:26:06
【问题描述】:

我的 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        

【问题讨论】:

标签: php pdo insert


【解决方案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
        )
    );

【讨论】:

  • 好吧,它不是:O 它插入了一个,从那时起它没有给出任何单一的错误,但没有插入任何东西
  • 如果您没有收到错误并且没有插入,则可能有两个问题。 1) 问题出在其他地方 2) PDO 未处于异常模式,因此不会引发错误
猜你喜欢
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 2016-12-15
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多