PHP/MySQL: запрос mysql с ВЫБОРОМ, ОТКУДА и ГДЕ


Я пытаюсь установить $nextPageID и $nextPageTitle с помощью следующего кода. К сожалению, они не настраиваются.

$pageCategoryID = 1;
$nextPageOrder = 2;

$fetchedNextPageData = mysql_query("
  SELECT pageID, pageCategoryID, 'order', title 
  FROM pages 
  WHERE pageCategoryID='$pageCategoryID' AND 'order'='$nextPageOrder'
") or die(mysql_error());

            while ($nextPageArray = mysql_fetch_array($fetchedNextPageData)) {
                $nextPageID = $nextPageArray['pageID'];
                $nextPageTitle = $nextPageArray['title'];
            }

Моя таблица pages содержит строку с идентификатором страницы =2, идентификатором категории страницы = 1, порядком =2, заголовком = Следующая страница, плюс 4 других столбца с данными, которые мне не нужны для этого запроса.

Этот код был упрощен в целях тестирования. Он будет очищен после того, как я заставлю его работать.

Есть какие-нибудь мысли о том, что я могу сделать, чтобы этот фрагмент кода заработал?

Author: Mark Rummel, 2011-11-25

3 answers

Забудьте о PHP прямо сейчас. Это ваш SQL-запрос:

SELECT pageID, pageCategoryID, 'order', title 
FROM pages 
WHERE pageCategoryID='1' AND 'order'='2'

В SQL, как и во многих других языках, для ввода буквенных строк используются кавычки. Поскольку строка 'order' никогда не будет равна строке '1, ваш запрос всегда будет возвращать нулевые строки, независимо от других значений.

Если order является именем столбца, вы не можете использовать его в одинарных кавычках.

Теперь, учитывая, что ORDER является зарезервированным словом , вам придется использовать обратные ссылки вокруг него. Вы также можете вводить целые числа как целые числа (нет необходимости цитировать их):

SELECT pageID, pageCategoryID, `order`, title 
FROM pages 
WHERE pageCategoryID=1 AND `order`=2
 3
Author: Álvaro González, 2011-11-25 18:14:16

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

 $data = array();
 while ($nextPageArray = mysql_fetch_assoc($fetchedNextPageData)) {
   $data[] = array('id' => $nextPageArray['pageID'], 
            'title' => $nextPageArray['title']);
 }
 5
Author: Gabriel, 2011-11-25 17:55:43

В предложении WHERE вашего запроса попробуйте удалить кавычки вокруг порядка и вместо этого используйте обратные галочки следующим образом:

`order`='$nextPageOrder'

И старайтесь избегать использования ключевых слов для имен таблиц/столбцов! Был там.

 1
Author: Aditya Naidu, 2011-11-25 18:06:13