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 других столбца с данными, которые мне не нужны для этого запроса.
Этот код был упрощен в целях тестирования. Он будет очищен после того, как я заставлю его работать.
Есть какие-нибудь мысли о том, что я могу сделать, чтобы этот фрагмент кода заработал?
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
Вы перезаписываете переменную для каждой записи, возможно, создадите массив, подобный
$data = array();
while ($nextPageArray = mysql_fetch_assoc($fetchedNextPageData)) {
$data[] = array('id' => $nextPageArray['pageID'],
'title' => $nextPageArray['title']);
}
В предложении WHERE вашего запроса попробуйте удалить кавычки вокруг порядка и вместо этого используйте обратные галочки следующим образом:
`order`='$nextPageOrder'
И старайтесь избегать использования ключевых слов для имен таблиц/столбцов! Был там.