【问题标题】:PHP/mySQL: mysql_query with SELECT, FROM, and WHEREPHP/mySQL:带有 SELECT、FROM 和 WHERE 的 mysql_query
【发布时间】:2012-01-06 13:04:00
【问题描述】:

我正在尝试使用以下代码设置$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 个包含此查询不需要的数据的列。

出于测试目的,此代码已被简化。我让它工作后会对其进行消毒。

有什么想法可以让这段代码正常工作吗?

【问题讨论】:

    标签: php mysql select where fetch


    【解决方案1】:

    您正在覆盖每条记录的变量,可能会创建一个类似的数组

     $data = array();
     while ($nextPageArray = mysql_fetch_assoc($fetchedNextPageData)) {
       $data[] = array('id' => $nextPageArray['pageID'], 
                'title' => $nextPageArray['title']);
     }
    

    【讨论】:

    • 感谢您的解决方案。这并没有解决需要使用反引号和删除一些单引号的主要问题。就我个人而言,我发现您编写此代码的方式需要更多代码并且不够清晰。不过,我对 PHP 和 mySQL 还是很陌生,也许我会及时看到你的方式。
    【解决方案2】:

    现在忘记 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
    

    【讨论】:

      【解决方案3】:

      在查询的 WHERE 子句中,尝试删除订单周围的引号并使用反引号,如下所示:

      `order`='$nextPageOrder'
      

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

      【讨论】:

      • 我必须在order 周围加上引号,否则我会收到错误消息。我想是因为它读作order,就像ORDER BY一样。
      • @MarkRummel 然后你需要反引号,而不是引号
      • 感谢您的回答。反引号是正确的,但我必须删除单引号才能使其正常工作。
      猜你喜欢
      • 2011-10-07
      • 1970-01-01
      • 2012-12-11
      • 2014-01-27
      • 2019-05-16
      • 1970-01-01
      • 2021-07-21
      • 2016-01-31
      • 1970-01-01
      相关资源
      最近更新 更多