Возникли проблемы с выполнением SQL-запросов - PullRequest
0 голосов
/ 03 июня 2010

У меня проблема с выполнением 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)

Можете ли вы помочь мне, пожалуйста?

Ответы [ 3 ]

5 голосов
/ 03 июня 2010

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

PersonalDetails where UserMasterID = '$userid'"

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

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

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

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

0 голосов
/ 03 июня 2010

Эххх - почему бы тебе не объединить?

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

но Джозеф на месте ...

0 голосов
/ 03 июня 2010

Если он работает правильно в 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());

Он должен работать сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...