PHP中的PDO没有´;t工作-无错误

PHP中的PDO没有´;t工作-无错误,php,mysql,pdo,Php,Mysql,Pdo,这是我的密码: $query = $dbh->prepare("INSERT INTO veranstaltung_anfrage (id, name, bild, ort, datum, info, info_lang, beginn, eintritt, veranstalter, aname, atel, aemail, avorname, a plz, astrasse, url) VALUES (:a, :name, :bild, :ort, :datum, :info, :in

这是我的密码:

$query = $dbh->prepare("INSERT INTO veranstaltung_anfrage (id, name, bild, ort, datum, info, info_lang, beginn, eintritt, veranstalter, aname, atel, aemail, avorname, a plz, astrasse, url) VALUES (:a, :name, :bild, :ort, :datum, :info, :infolang, :beginn, :eintritt, :veranstalter, :a, :a, :a, :a, :a, :a, :a)");

$query->bindParam(':name', $name);
$query->bindParam(':bild', $bild);
$query->bindParam(':ort', $ort);
$query->bindParam(':datum', $datum);
$query->bindParam(':info', $info);
$query->bindParam(':infolang', $infolang);
$query->bindParam(':beginn', $beginn);
$query->bindParam(':eintritt', $eintritt);
$query->bindParam(':vertanstalter', $veranstalter);
$query->bindParam(':a', $a);

$a = "";
$name = $_POST['name']; 
$bild = 'bild.jpg';
$ort = $_POST['ort'];
$datum = $_POST['date1'];
$info = $_POST['info'];
$infolang = $_POST['infolang'];
$beginn = $_POST['time'];
$eintritt = $_POST['eintritt'];
$veranstalter = $_POST['veranstalter'];

$query->execute();

没有错误,但也没有数据库条目。。我的代码出了什么问题?

看看它,我的三条评论组合成了一个很好的答案

  • 您可能应该在绑定参数之前定义它们。这不是严格必要的(因为您使用的是
    bindpram
    而不是
    bindValue
    ),但这是一个好主意,因为。。。嗯,试图在某些东西存在之前使用它是荒谬的

  • plz
    不是有效的列名。要么它是一个类型,要么你需要在它周围加上反勾号,比如
    `a plz`

  • 默认情况下,PDO以静默方式失败。我认为这很愚蠢,但这就是它的工作原理。并按如下方式启用异常模式:

    $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    
    突然,错误


除了@Niet建议的内容之外,您还必须知道,您不能像以前那样对占位符重复使用相同的名称:

INSERT INTO veranstaltung_anfrage (....) VALUES (..:a, :a, :a, :a, :a, :a, :a)
您需要为他们指定唯一的名称:

INSERT INTO veranstaltung_anfrage (....) VALUES (..:a1, :a2, :a3, :a4, :a5....)

然后把它们一个一个地捆起来

你也自下而上地读书吗?是的!execute位于底部,因此它的语法正确@Danielppensteiner如果你再次需要我的帮助,欢迎告诉我