你好,我的问题很简单,但我不明白为什么会这样。
当我设置变量$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
}
}发布于 2013-11-18 21:13:02
$result是表示查询结果的句柄。第二个查询覆盖第一个查询的结果,有效地扼杀了第一个查询的结果:
$result = mysql_query($query1);
while($row = mysql_fetch_row($result)) {
$result = mysql_query(...);
^^^^^^^---- overwrite occurs here运行查询#1,启动循环,运行查询#2,该查询的结果将替换第一个查询的结果,并被内部while()循环完全消耗。当内环完成并控制返回到外部循环时,这个新的$result句柄中没有更多的数据,因此外部循环也会终止。
发布于 2013-11-18 21:12:41
您不仅要更改$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
}
}发布于 2013-11-18 21:13:03
这是因为您正在使用while in while,它意味着您的第二时间:
$result = mysql_query($query);
while($row2 = mysql_fetch_row($result))将覆盖您的第一个$result。
https://stackoverflow.com/questions/20057965
复制相似问题