我有一个包含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文件中的同一个表上执行两个连续查询。但我认为这有一个简单的解决方案......
请尽快帮助我:(爱你们:)
答案 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' => ?
)
)
应该很容易迭代。