PHP再次为sql查询设置变量值不起作用

时间:2013-11-18 21:09:59

标签: php mysql

您好我的问题很简单,但我无法理解为什么会这样。

当我设置varialbe $ query一次然后再设置它时它不起作用。 只有在为变量使用其他名称时,例如$ query2才有效。

工作:

$connect = mysql_connect("","","") or die(mysql_error());
mysql_select_db("");
$query = "select post_title,id from wp_posts where post_status='publish'";
$result = mysql_query($query);
while($row = mysql_fetch_row($result))
{
WHILE 1
$query2 = "SELECT meta_key FROM `wp_postmeta` WHERE post_id='$id'";
$result2 = mysql_query($query2);
while($row2 = mysql_fetch_row($result2))
{
WHILE 2
}
}

不工作:

$connect = mysql_connect("","","") or die(mysql_error());
mysql_select_db("");
$query = "select post_title,id from wp_posts where post_status='publish'";
$result = mysql_query($query);
while($row = mysql_fetch_row($result))
{
WHILE 1
$query = "SELECT meta_key FROM `wp_postmeta` WHERE post_id='$id'";
$result = mysql_query($query);
while($row2 = mysql_fetch_row($result))
{
WHILE 2
}
}

3 个答案:

答案 0 :(得分:3)

您不仅要更改$query变量,还要更改$result。哪个在你的while中,搞砸了第一个结果集。您只需分配一个新的结果集。

这将有效:

$query = "select post_title,id from wp_posts where post_status='publish'";
$result = mysql_query($query);
while($row = mysql_fetch_row($result))
{
   WHILE 1
   $query = "SELECT meta_key FROM `wp_postmeta` WHERE post_id='$id'";
   $result2 = mysql_query($query);
   while($row2 = mysql_fetch_row($result2))
   {
      WHILE 2
   }
}

答案 1 :(得分:2)

$result是表示查询结果的HANDLE。您的第二个查询是OVERWRITING第一个查询的结果,有效地终止了第一个查询的结果:

$result = mysql_query($query1);
while($row = mysql_fetch_row($result)) {
    $result = mysql_query(...);
    ^^^^^^^---- overwrite occurs here

运行查询#1,启动循环,运行查询#2。该查询的结果将替换第一个查询的结果,并被内部while()循环完全占用。当内部循环完成并且控制返回到外部循环时,这个新的$result句柄中没有更多数据,因此外部循环也终止。

答案 2 :(得分:1)

因为你在使用的同时,它意味着你的第二次:

$result = mysql_query($query);
while($row2 = mysql_fetch_row($result))

将首先覆盖您的$result