我正在尝试使用以下代码设置$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个其他列,其中包含此查询不需要的数据。
此代码已经过简化以用于测试目的。我开始工作后会对它进行消毒。
关于如何使这段代码正常工作的任何想法?
答案 0 :(得分:5)
你正在覆盖每条记录的变量,也许会创建一个像
这样的数组 $data = array();
while ($nextPageArray = mysql_fetch_assoc($fetchedNextPageData)) {
$data[] = array('id' => $nextPageArray['pageID'],
'title' => $nextPageArray['title']);
}
答案 1 :(得分:3)
立即忘记PHP。这是您的SQL查询:
SELECT pageID, pageCategoryID, 'order', title
FROM pages
WHERE pageCategoryID='1' AND 'order'='2'
在SQL中,与许多其他语言一样,您可以使用引号键入文字字符串。由于'order'
字符串永远不会等于'1
'字符串,因此无论其他值如何,您的查询都将始终返回零行。
如果order
是列名,则不能单引号。
现在,鉴于ORDER
是reserved word,你必须在它周围使用反引号。您也可以将整数键入为整数(不需要引用它们):
SELECT pageID, pageCategoryID, `order`, title
FROM pages
WHERE pageCategoryID=1 AND `order`=2
答案 2 :(得分:1)
在查询的WHERE子句中,尝试删除订单周围的引号,然后使用返回刻度,如下所示:
`order`='$nextPageOrder'
尽量避免在表/列名称中使用关键字!去过那里。