SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法错误[Php PDO]
我在许多网站上搜索了一个答案,但它似乎没有人遇到与我一样的问题我现在有,我遇到过的。SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法错误[Php PDO]
的问题是,我收到此错误信息:
Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '), NULL)' at line 2
我的代码的开头是这样的。我一直在盯着它,但我似乎没有找到问题,有什么帮助?
<?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()
function。您正在使用它,如NOW()
但这不是它打算如何使用它。你需要在那里有一个论据。
我相信你只是想用NOW()
来代替,如果它是一个只有时间的字段,它会自动使用时间戳的时间部分。
VALUES
(:namn,
:enamn,
NOW(),
:personnr,
:kon,
:telefon,
:epost,
:allergier,
:kategori,
:brodtext,
NOW(), /* fixed! */
:eid)
感谢您的回应,但没有解决它.. :( – Dentalbudet
我猜你在另一个查询中的代码中有一个类似的错误较低。看看你是否在注释掉第一个查询后得到同样的错误。所以,这是一个不同的查询 – Jason
贾森,好点,我在我的插入查询中使用瑞典语字母,我面临着同样的问题,如果你有解决方案,请更新我们。 – ziaullahzia
也许错误是在数据库表中? – Mario
如果答案解决了您的问题,请考虑接受答案。以下是http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work然后返回到此处,并使用勾号/复选标记执行相同操作,直至变为绿色。这告知社区,找到了解决方案。否则,其他人可能会认为这个问题仍然存在,并且可能需要发布(更多)答案。您将获得积分,其他人将被鼓励帮助您。 *欢迎来到Stack!* –
嗨,我试图实施更改,但没有任何工作..所以它仍然开放:D – Dentalbudet