如何从同一个表中的mysql_query与同一个php文件中的不同where子句

时间:2011-05-10 19:49:06

标签: php mysql

我有一个包含4篇文章的表,其中id为1,2,3和4,订货价值为1,2,3,4。 他们有标题,图像等单独的列。我需要明确地使用where子句。所以我做了: 对于第1条:

//topstory1
$sql_topstory1 ="SELECT * FROM topstory WHERE story_active='1' && story_order='1'";
$result_topstory1  = mysql_query($sql_topstory1);
$row_topstory1     = mysql_fetch_array($result_topstory1);          
$story1_title      = $row_topstory1['story_title'];
$story1_abstract   = $row_topstory1['story_text'];

第2条

//topstory2
$sql_topstory2 ="SELECT * FROM topstory WHERE story_active='1' && story_order='2'";
$result_topstory2  = mysql_query($sql_topstory2);
$row_topstory2     = mysql_fetch_array($result_topstory2);          
$story2_title      = $row_topstory2['story_title'];
$story2_abstract   = $row_topstory2['story_text'];

因为我必须在页面中重复使用它们。

问题是,第一个查询有效但第二个查询没有。似乎MySql无法在单个php文件中的同一个表上执行两个连续查询。但我认为这有一个简单的解决方案......

请尽快帮助我:(爱你们:)

3 个答案:

答案 0 :(得分:1)

第二个查询失败有几种可能的原因,但它是文件中的第二个查询并不会导致它失败。

我希望第2条没有将活动标志设置为1,导致您获得空结果集。

另一个选择是您可能在第一次查询后关闭了mysql连接,然后您无法执行另一个查询。 (一般规则:不要关闭数据库连接.PHP会处理这个问题。)

答案 1 :(得分:0)

为什么不通过1个查询获取它们?

$sql_topstory ="SELECT * FROM topstory WHERE story_active='1' && story_order IN(1, 2) ORDER BY story_order DESC";

$result_topstory = mysql_query($sql_topstory) or trigger_error('Query Failed: ' . mysql_error());
 while ($row = mysql_fetch_assoc($result_topstory)) {
      $title[] = $row['story_title'];
      $abstract[] = $row['story_abstract'];
 }

 // Then to display

 echo 'Story 1 is ' . $title[0] . ' with an abstract of ' . $abstract[1];

有很多方法可以做到这一点,这只是一个简单的演示。

答案 2 :(得分:0)

$query = <<<SQL
   SELECT
      story_title
      , story_text
   FROM
      topstory
   WHERE
      story_active
   ORDER BY
      story_order ASC
SQL;

$result = mysql_query($query);

$stories = array();

while ($row = mysql_fetch_assoc($result)) {
   $stories[] = $row;
}

现在你有一系列故事如下:

array(
   0 => array(
      'story_title' => ?
      , 'story_text' => ?
   )
   , 1 => array(
      'story_title' => ?
      , 'story_text' => ?
   )
)

应该很容易迭代。