2017-03-06 12 views
0

私は多数のサイトで回答を検索しましたが、誰とも同じ問題はないようです今、私が遭遇したものを持っています。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; 

    ?> 

私は( `)を使用せずに試しましたが、メッセージは同じです。

+0

多分、データベーステーブルにエラーがありますか? – Mario

+0

答えがあなたの問題を解決した場合は、答えを受け入れることを検討してください。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-workがここに戻って、ティック/チェックマークで緑色に変わるまで同じことを行う方法があります。これはコミュニティに通知し、解決策が見つかりました。そうでない場合、他の人は質問がまだ開いていると思うかもしれませんし、(もっと)回答を投稿したいかもしれません。あなたはポイントを獲得し、他の人はあなたを助けることを奨励されます。 * Welcome to Stack!* –

+0

こんにちは、私は変更を実装しようとしましたが、何も働いていません..まだ開いています:D – Dentalbudet

答えて

1

このエラーは、基本的に、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) 
+0

レスポンスありがとうございましたが、それを修正しませんでした.. :( – Dentalbudet

+0

私は、別のクエリであなたのコードで同様のエラーが低いと思います。この最初のクエリをコメントアウトした後に同じエラーが発生するかどうかを確認してください。 – Jason

+0

Jason、良い点。私は挿入クエリでスウェーデン語の文字を使用していますが、私は同じ問題に直面しています。 – ziaullahzia

関連する問題