簡體   English   中英

SQLSTATE [42000]:語法錯誤或訪問沖突:1064您的SQL語法有錯誤[Php PDO]

[英]SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax [Php PDO]

我已經在許多站點上搜索了答案,但是似乎沒有人遇到我現在遇到的同樣的問題。

問題是正在收到此錯誤消息:

錯誤:SQLSTATE [42000]:語法錯誤或訪問沖突:1064您的SQL語法有錯誤。 檢查與您的MariaDB服務器版本相對應的手冊,以在第2行的'),NULL)'附近使用正確的語法

我的代碼的開頭看起來像這樣。 我一直在盯着它,但似乎找不到問題,有什么幫助嗎?

<?php
$dbhost="host";   <-- this is line 2.
$dbname="db";
$dbusername="user";
$dbpassword="pass";

ini_set("error_reporting", E_ALL);

if(isset($_POST) && !empty($_POST["namn"])) {

try {
$link = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbusername, $dbpassword);
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $link->prepare("INSERT INTO `eventcustomers` (`namn`,`enamn`,`datum`,`personnr`,`kon`,`telefon`,`epost`,`allergier`,`kategori`,`brodtext`,`reseto`,`eid`)
    VALUES(:namn, :enamn, NOW(), :personnr, :kon, :telefon, :epost, :allergier, :kategori, :brodtext, time(), :eid)");

$stmt->bindParam(':namn', $_POST["namn"]);
$stmt->bindParam(':enamn', $_POST["enamn"]);
$stmt->bindParam(':personnr', $_POST["personnr"]);
$stmt->bindParam(':kon', $_POST["kon"]);
$stmt->bindParam(':telefon', $_POST["telefon"]);
$stmt->bindParam(':epost', $_POST["epost"]);
$stmt->bindParam(':allergier', $_POST["allergier"]);
$stmt->bindParam(':kategori', $_POST["kategori"]);
$stmt->bindParam(':brodtext', $_POST["brodtext"]);
$stmt->bindParam(':eid', $_POST["eid"]);
$stmt->execute();
    }
catch(PDOException $e)
    {
    echo "Error: " . $e->getMessage();
    }
}
$link = null;

    ?>

我試過不使用(`),但消息是相同的。

這個錯誤基本上是在告訴您您的SQL語法有錯誤-只要您要對正確的查詢進行故障排除,周圍的PHP都無法為您提供幫助。

(重新格式化以便於查看)

INSERT INTO
    `eventcustomers`
    (`namn`,
    `enamn`,
    `datum`,
    `personnr`,
    `kon`,
    `telefon`,
    `epost`,
    `allergier`,
    `kategori`,
    `brodtext`,
    `reseto`,
    `eid`)
VALUES
    (:namn,
    :enamn,
    NOW(),
    :personnr,
    :kon,
    :telefon,
    :epost,
    :allergier,
    :kategori,
    :brodtext,
    time(), /* this is your problem */
    :eid)

這是您的線索: the right syntax to use near '), NULL)' :您知道自己有一個小括號,逗號,值和小括號。

這表明您使用了time()函數 您像NOW()一樣使用它,但這並不是它打算使用的方式。 您需要在那里一個參數。

我相信您只想使用NOW() ,如果它是僅時間字段,它將僅自動使用時間戳記的時間部分。

VALUES
    (:namn,
    :enamn,
    NOW(),
    :personnr,
    :kon,
    :telefon,
    :epost,
    :allergier,
    :kategori,
    :brodtext,
    NOW(), /* fixed! */
    :eid)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM