您好我的问题很简单,但我无法理解为什么会这样。
当我设置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
}
}
答案 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
。