列数与第1行的值计数不匹配,我也没有发现错误

时间:2017-03-23 19:32:54

标签: php mysql prepare

我有一个PHP脚本,应该将一些值插入到mysql-db中。

我认为它必须有效,但始终存在错误'列数与第1行'的值计数不匹配。我一遍又一遍地看,尝试一下,但我没有发现错误。

有人能看看,帮我找到它吗?

以下是代码:

<?php
  $pdo = new PDO('mysql:host=www.mysite.com;dbname=db00000001', 'dbo00000001', 'password');
  $statement = $pdo->prepare("INSERT INTO tickets (Fehlernummer, 
                                                   Programmversion, 
                                                   DBVersion, 
                                                   Status, 
                                                   Kategorie, 
                                                   Dringlichkeit, 
                                                   NoWork,
                                                   Kurzbeschreibung, 
                                                   Langbeschreibung, 
                                                   Benutzer, 
                                                   BenutzerName, 
                                                   Datum,
                                                   BehDatum) VALUES (:fehlernummer, 
                                                                  :programmversion, 
                                                                  :dbversion, 
                                                                  :status, 
                                                                  :kategorie, 
                                                                  :dringlichkeit, 
                                                                  :nowork, 
                                                                  :kurzbeschreibung, 
                                                                  :langbeschreibung, 
                                                                  :benutzer, 
                                                                  :benutzername, 
                                                                  :datum
                                                                  :behdatum)");
  $statement->bindValue('fehlernummer', $_GET['fehlernummer']);
  $statement->bindValue('programmversion', $_GET['programmversion']);
  $statement->bindValue('dbversion', $_GET['dbversion']);
  $statement->bindValue('status', $_GET['status']);
  $statement->bindValue('kategorie', $_GET['kategorie']);
  $statement->bindValue('dringlichkeit', $_GET['dringlichkeit']);
  $statement->bindValue('nowork', $_GET['nowork']);
  $statement->bindValue('kurzbeschreibung', $_GET['kurzbeschreibung']);
  $statement->bindValue('langbeschreibung', $_GET['langbeschreibung']);
  $statement->bindValue('benutzer', $_GET['benutzer']);
  $statement->bindValue('benutzername', $_GET['benutzername']);
  $statement->bindValue('datum', $_GET['datum']);
  $statement->bindValue('behdatum', $_GET['behdatum']);
  if ($statement->execute()) {
    echo 'OK '."<br />"; 
  } else {
    echo 'Failes '."<br />";
    echo $statement->queryString."<br />";
    print_r($pdo->errorInfo());
    echo "<br />";
    print_r($statement->errorInfo());
    print_r($_GET);
    echo "<br />";
  }
  $lastid=$pdo->lastInsertId();
  echo $lastid;
?>

这是一个URL-String:

http://www.example.com/scripts/newerror.php?fehlernummer=00003&programmversion=4.6.1.14&dbversion=4.6.1.14&status=0&kategorie=Nocheinekategorie&dringlichkeit=0&nowork=0&kurzbeschreibung=fsafa&langbeschreibung=fdsafafds&benutzer=diete&benutzername=dieter&datum=2017-03-23%2020:15:43&behdatum=1899-01-01%2000:00:00

现在回复:

Failes 
INSERT INTO tickets (Fehlernummer, Programmversion, DBVersion, Status, Kategorie, Dringlichkeit, NoWork, Kurzbeschreibung, Langbeschreibung, Benutzer, BenutzerName, Datum, BehDatum) VALUES (:fehlernummer, :programmversion, :dbversion, :status, :kategorie, :dringlichkeit, :nowork, :kurzbeschreibung, :langbeschreibung, :benutzer, :benutzername, :datum :behdatum)
Array ( [0] => 00000 [1] => [2] => ) 
Array ( [0] => 21S01 [1] => 1136 [2] => Column count doesn't match value count at row 1 ) Array ( [fehlernummer] => 00003 [programmversion] => 4.6.1.14 [dbversion] => 4.6.1.14 [status] => 0 [kategorie] => Nocheinekategorie [dringlichkeit] => 0 [nowork] => 0 [kurzbeschreibung] => fsafa [langbeschreibung] => fdsafafds [benutzer] => diete [benutzername] => dieter [datum] => 2017-03-23 20:15:43 [behdatum] => 1899-01-01 00:00:00 ) 
0

感谢所有他们给我一些tipps

迪特

1 个答案:

答案 0 :(得分:0)

:datum:behdatum

之间的值列表中缺少逗号
$statement = $pdo->prepare("INSERT INTO tickets 
                                (Fehlernummer, Programmversion, 
                                DBVersion, Status, 
                                Kategorie, Dringlichkeit, 
                                NoWork, Kurzbeschreibung, 
                                Langbeschreibung, Benutzer, 
                                BenutzerName, Datum, BehDatum) 
                        VALUES (:fehlernummer, :programmversion, 
                                :dbversion, :status, 
                                :kategorie, :dringlichkeit, 
                                :nowork, :kurzbeschreibung, 
                                :langbeschreibung, :benutzer, 
                                :benutzername, :datum, :behdatum)");
// missing comma was here -----------------------    ^