这是我的代码:
$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();
没有错误但也没有数据库条目。我的代码出了什么问题?
答案 0 :(得分:1)
看着它,我的三条评论结合在一起。
您可能应该在绑定它们之前定义参数。这不是绝对必要的(因为你使用bindParam
而不是bindValue
),但这是一个好主意,因为......好吧,试图在它存在之前使用它是荒谬的。
a plz
不是有效的列名。要么它是一种类型,要么需要它周围的反引号,例如`a plz`
默认情况下,PDO无提示失败。我觉得这很愚蠢,但这就是它的运作方式。 Check the docs并启用此类异常模式:
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
突然,错误!
答案 1 :(得分:0)
除了@Niet建议你必须知道你不能像你一样重复占位符的相同名称:
INSERT INTO veranstaltung_anfrage (....) VALUES (..:a, :a, :a, :a, :a, :a, :a)
你需要给他们一个独特的名字:
INSERT INTO veranstaltung_anfrage (....) VALUES (..:a1, :a2, :a3, :a4, :a5....)
然后逐个绑定它们