【问题标题】:PDO in PHP doesn´t work - no errorPHP 中的 PDO 不起作用 - 没有错误
【发布时间】:2014-09-19 14:57:23
【问题描述】:

这是我的代码:

$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();

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

【问题讨论】:

  • 是的!执行在底部,所以它是正确的语法!

标签: php mysql pdo


【解决方案1】:

看,我的三个cmet组合成一个很好的答案。

  • 您可能应该在绑定参数之前定义参数。这不是绝对必要的(因为您使用的是bindParam 而不是bindValue),但这是一个好主意,因为......好吧,在它存在之前尝试使用它是荒谬的。

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

  • 默认情况下,PDO 会静默失败。我认为这很愚蠢,但这就是它的工作原理。 Check the docs 并像这样启用异常模式:

    $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    

    突然出现错误!

【讨论】:

    【解决方案2】:

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

    INSERT INTO veranstaltung_anfrage (....) VALUES (..:a, :a, :a, :a, :a, :a, :a)
    

    你需要给他们唯一的名字:

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

    然后一一绑定

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-22
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 2011-02-11
      • 2017-06-16
      相关资源
      最近更新 更多