2015-04-24 2 views
-2

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1' in /home//domains//public_html/new/.php:140 Stack trace: #0 /home//domains//public_html/new/.php(140): PDOStatement->execute() #1 {main} thrown in /home//domains//public_html/new/***.php on line 140У меня есть ошибка в MySql

Ниже вы найдете мой код:

if(count($errors) == 0) { 
    $title = trim($_POST['title']); 
    $category = trim($_POST['category']); 
    $ing = trim($_POST['ing']); 
    $ing_pond = trim($_POST['ing_pond']); 
    $ing_note = trim($_POST['ing_note']); 
    $description = trim($_POST['description']); 
    $time = trim($_POST['time']); 
    $insert = $dbh->prepare('INSERT INTO recettes (id, id_user, title, category, ing, ing_pond, ing_note, description, graad, time) VALUES (NULL, :meid :title, :category, :ing, :ing_pond, :ing_note, :description, :graad, :time'); 
    $insert->bindParam(':meid', $me['id'], PDO::PARAM_INT); 
    $insert->bindParam(':title', $title, PDO::PARAM_STR); 
    $insert->bindParam(':category', $category, PDO::PARAM_STR); 
    $insert->bindParam(':ing', $ing, PDO::PARAM_STR); 
    $insert->bindParam(':ing_pond', $ing_pond, PDO::PARAM_STR); 
    $insert->bindParam(':ing_note', $ing_note, PDO::PARAM_STR); 
    $insert->bindParam(':description', $description, PDO::PARAM_STR); 
    $insert->bindParam(':graad', $graad, PDO::PARAM_STR); 
    $insert->bindParam(':time', $time, PDO::PARAM_STR); 
    $insert->execute(); 
    $uid = $dbh->lastInsertId(); 
    echo alert('Uw gerecht is succesvol toegevoegd.', 'success'); 
    $added = true; 
}else{ 
    echo alert('Er ging wat mis. De volgende dingen gingen fout:<ul><li>' . join('</li><li>', $errors) . '</li></ul>Het gerecht is helaas niet toegevoegd.', 'danger'); 
} 

Как я могу получить это решить, может кто-то пожалуйста, помогите мне :-)

Thnx много!

+5

': meid: title'. Нет разделителя. – Devon

+0

О, просто видел комментарий, поскольку я отправлял '' – nomistic

+0

и ** ',: time) '); '**. Список значений должен быть завершен закрывающим париком. – spencer7593

ответ

2

Заменить строку:

$insert = $dbh->prepare('INSERT INTO recettes (id, id_user, title, category, ing, ing_pond, ing_note, description, graad, time) VALUES (NULL, :meid :title, :category, :ing, :ing_pond, :ing_note, :description, :graad, :time'); 

С этой линией:

$insert = $dbh->prepare('INSERT INTO recettes (id, id_user, title, category, ing, ing_pond, ing_note, description, graad, time) VALUES (NULL, :meid, :title, :category, :ing, :ing_pond, :ing_note, :description, :graad, :time)'); 

Вы забываете последний ) в коде и запятую , между :meid и :title

+1

У этого еще есть проблема с разделителем. – nomistic

+0

@nomistic thanks Я редактирую сейчас –

3

В запросе, посмотрите на эту линию:

VALUES (NULL, :meid :title, :category, :ing, :ing_pond, :ing_note, :description, :graad, :time'); 

Обратите внимание, что нет запятой между :meid и :title

это должно быть

VALUES (NULL, :meid, :title, :category, :ing, :ing_pond, :ing_note, :description, :graad, :time)'); 
+0

Это фрагмент заявления. Он сокращен для удобства чтения. – nomistic

0

Также возьмите мой advaice не писать петлю для каждой SQL команды

просто напишите один раз в любом месте

создать класс php и отправить только команду

Почему вы должны следовать этому методу? , потому что у вас снова будет такая же ошибка и проблема, и это может заставить программистов сходить с ума!

однако, если вы подготовили команду sql один раз, вам не нужно писать для каждой благодарности sql.

PHP PDO