PHP / mySQL: mysql_query с SELECT, FROM и WHERE - PullRequest
4 голосов
/ 25 ноября 2011

Я пытаюсь установить $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 содержит строку с pageID = 2, pageCategoryID = 1, order = 2, title = Next Page, а также 4 других столбца с данными, которые мне не нужны для этого запроса.

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

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

Ответы [ 3 ]

5 голосов
/ 25 ноября 2011

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

 $data = array();
 while ($nextPageArray = mysql_fetch_assoc($fetchedNextPageData)) {
   $data[] = array('id' => $nextPageArray['pageID'], 
            'title' => $nextPageArray['title']);
 }
3 голосов
/ 25 ноября 2011

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

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

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

Если order является именем столбца, вы не можете заключить в кавычкиit.

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

SELECT pageID, pageCategoryID, `order`, title 
FROM pages 
WHERE pageCategoryID=1 AND `order`=2
1 голос
/ 25 ноября 2011

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

`order`='$nextPageOrder'

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

...