PHP / mySQL:带有SELECT,FROM和WHERE的mysql_query

时间:2011-11-25 17:52:04

标签: php mysql select where fetch

我正在尝试使用以下代码设置$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 个答案:

答案 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是列名,则不能单引号。

现在,鉴于ORDERreserved word,你必须在它周围使用反引号。您也可以将整数键入为整数(不需要引用它们):

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

答案 2 :(得分:1)

在查询的WHERE子句中,尝试删除订单周围的引号,然后使用返回刻度,如下所示:

`order`='$nextPageOrder'

尽量避免在表/列名称中使用关键字!去过那里。