2016-05-05 2 views
0

Когда я пытаюсь вставить что-то в базу данных, я получаю синтаксическую ошибку. У меня есть следующий код, но я не знаю, что я делаю неправильно.Почему я получаю синтаксическую ошибку или нарушение прав доступа?

if(isset($_POST['imadbID']) || isset($_POST['comment'])|| isset($_POST['Title']) || isset($_POST['Year']) 
|| isset($_POST['released']) || isset($_POST['Runtime'])|| isset($_POST['Actors'])||isset($_POST['Country']) || isset($_POST['Language']) 
|| isset($_POST['Plot']) || isset($_POST['Poster']) || isset($_POST['Director']) || isset($_POST['Writer']) || isset($_POST['imdbRating']) || isset($_POST['tst'])){ 
    $imdbid=json_decode($_POST['imdbID']); $comment=json_decode($_POST['comment']); 
    $title=json_decode($_POST['Title']); $year=json_decode($_POST['Year']); $released=json_decode($_POST['Released']); 
$runtime=json_decode($_POST['Runtime']); $actor=json_decode($_POST['Actors']); $country=json_decode($_POST['Country']); 
$lang=json_decode($_POST['Language']); $plot=json_decode($_POST['Plot']); $poster=json_decode($_POST['Poster']); 
$director=json_decode($_POST['Director']); $writer=json_decode($_POST['Writer']); $rating=json_decode($_POST['imdbRating']); 
$test=json_decode($_POST['tst']); 
    } 
try { 
$sql="INSERT INTO films (title,length,description,releasedate,bannerpath,language,imdbid,country,rating) 
VALUES ($title,$runtime,$plot,$released,$poster,$lang,$imdbid,$country,$rating)"; 
$conn->exec($sql); 
$film_id=$conn->lastInsertId($sql); 
} 
catch(PDOException $e) { 
    echo 'ERROR: ' . $e->getMessage(); 
} 

У меня есть другие вопросы и ответы, связанные с этим, но не похоже, чтобы найти решение.

ошибка я получаю

ERROR: 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 ',,,,,,,6.5)' at line 2

+1

вы используете PDO и не связывают параметры в заявлении? –

ответ

3

Отсутствие котировок, вероятно, причина ошибки синтаксиса, однако вы используете PDO таким образом, что это небезопасно, вы могли бы также вернуться к использованию mysql_*

Попробуйте это ..

$sql=$conn->prepare("INSERT INTO films (title,length,description,releasedate,bannerpath,language,imdbid,country,rating) 
VALUES (:t,:r,:p,:re,:po,:s,:i,:c,:ra)"); 
$sql->execute(array(":t"=>$title, ":r"=>$runtime, ":p"=>$plot, ":re"=>$released, ":po"=>$poster,":s"=>$lang,":i"=>$imdbid, ":c"=>$country, ":ra"=>$rating)); 
+0

использовал ваш код, все отлично, за исключением заголовка, и все возвращается null.can't узнать, почему –

+0

var_dump все переменные, которые вы вставляете, и убедитесь, что они не имеют значения null или empty перед вставкой. –

+0

Да, они равны нулю. –

Смежные вопросы