2013-05-27 2 views
-1

Почему это делает то, что делает?Отключение строки во вставном запросе

Код:

<?php 
    if (isset($_POST['sourceInsert'])) { 
     $url = $db_con3->real_escape_string($_POST['url']); 
     $desc = $db_con3->real_escape_string($_POST['desc']); 
     echo '$urlbefore is ' . $url . '<br />'; ///for troubleshooting 
     $result = $db_con3->query("INSERT INTO gdrive_links (evalid, userid, url, desc) VALUES ('$evalid', '$id', '$url', '$desc')"); 

     echo '$urlafter is ' . $url . '<br />'; ///For troubleshooting 
     echo $db_con3->error; ///For troubleshooting 
    } 
?> 

HTML выход:

$urlbefore is https://docs.google.com/file/d/0B0tcjQ3FxlB6dWlMTkNQVjBwVDA/edit?usp=sharing 
$urlafter is https://docs.google.com/file/d/0B0tcjQ3FxlB6dWlMTkNQVjBwVDA/edit?usp=sharing 
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 'desc) VALUES ('1284017', '1', 'https://docs.google.com/file/d/0B0tcjQ3FxlB6dWlMT' at line 1 

Так строка штраф до и после строки запроса, но в запросе он отрезают на 49-й символ. Я что-то упустил? Похоже, что мой синтаксис запроса правильный ...

+0

У вас есть '(evalid, userid, url, desc) VALUES ('$ evalid', '$ id', '$ url', '$ desc')', не должно быть '(evalid, userid, url, desc) VALUES ('$ evalid', '$ userid', '$ url', '$ desc') '? –

+3

'desc' - это ключевое слово mysql ... переименовать в любой другой –

+0

нет, идентификатор пользователя для этой таблицы является идентификатором $ id для пользователя. – Rich701

ответ

4

Проблема в том, что у вас есть reserved keyword, unescaped.

$result = $db_con3->query("INSERT INTO gdrive_links (`evalid`, `userid`, `url`, `desc`) VALUES ('$evalid', '$id', '$url', '$desc')"); 

Вам необходимо избегать их, используя обратные такты, таким образом. desc - зарезервированное ключевое слово в MySQL. Побег их, как выше.

+0

Я просто изменил имя поля file_desc, и все работает, спасибо. – Rich701

+0

Добро пожаловать! Если вы хотите использовать 'desc', вы можете использовать этот способ. Вы можете скопировать код в свой ответ и вставить его в свое приложение, чтобы оно работало. :) –

+0

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

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