Возникли проблемы с выполнением SQL-запросов

0

У меня проблема с выполнением sql-запроса. Я использую этот sql-запрос:

$userid = 1;  

$sql = mysql_query("
  SELECT ID, Nm, Address, date_format(DateOfBirth, '%d%M%Y') as DateOfBirth 
  FROM PersonalDetails where UserMasterID = $userid
") or die (mysql_error());

Результат выглядит как:

У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MySQL, для правильного синтаксиса, используемого рядом с '= 'в строке 1

Когда я выполняю это в PHPMyAdmin, он работает правильно. Я использую mysql (5.0.5b) и PHP (5.2.6)

Можете ли вы мне помочь?

  • 0
    Вы не можете выполнить это в PHPMyAdmin. Потому что это PHP-код, а PHPMyAdmin понимает только SQL
Теги:
mysql-error-1064

3 ответа

5

Если UserMasterID не является целым числом, вам может потребоваться поставить кавычки вокруг значения:

PersonalDetails where UserMasterID = '$userid'"

Запрос, который вы цитируете выше, не идентичен тому, что вы запускаете в phpMyAdmin. Он содержит переменную PHP. Когда в SQL-проблемах всегда выводится и анализируется анализируемый запрос (без ссылок на переменные PHP в них).

$query = "select ID... etc. etc.";
$result = mysql_query($query);

if (!$result) 
 echo "Error in query $query: ".mysql_error();

90% проблем можно обнаружить и решить таким образом.

  • 0
    вы забыли добавить сам запрос к сообщению отладки :) и вы можете заметить из моих сообщений, что я популяризирую использование trigger_error вместо echo. Вы можете найти это чрезвычайно полезным.
  • 0
    @Col Да, мне тоже нравится trigger_error , хорошая мысль. Но там есть $query , не так ли? Или я что-то упускаю?
Показать ещё 3 комментария
0

Если он работает корректно в PHPMyAdmin, но не в PHP-коде, то это говорит мне, что PHPMyAdmin выполняет известную задачу ускользания и дезинфекции всего, что возможно.

Измените свой код и проверьте его.

$userid = 1;  

$sql = mysql_query("
  SELECT `ID`, `Nm`, `Address`, date_format(`DateOfBirth`, '%d%M%Y') as DateOfBirth 
  FROM `PersonalDetails` where `UserMasterID` = '{$userid}'
") or die (mysql_error());

Теперь он должен выполняться.

  • 1
    Если вы собираетесь понизить меня (кем бы это ни было), по крайней мере, оставьте комментарий, почему.
-2

Ehhh - почему бы вам не объединиться?

"SELECT `ID`, `Nm`, `Address`, date_format(`DateOfBirth`, '%d%M%Y') as DateOfBirth 
FROM `PersonalDetails` where `UserMasterID` = '" . $userid . "'";

но Джозеф находится на месте...

  • 0
    пожалуйста, никогда не пишите запрос таким образом ... он подвергает различным угрозам безопасности, таким как атаки SQL-инъекций.
  • 0
    Дело не в безопасности - речь шла о семантике и синтаксисе, особенно о нечетных числах / апострофах.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню