首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP再次为sql查询设置变量值

问PHP再次为sql查询设置变量值
EN

Stack Overflow用户
提问于 2013-11-18 21:09:59
回答 3查看 100关注 0票数 0

你好,我的问题很简单,但我不明白为什么会这样。

当我设置变量$query一次,然后再次设置它时,它就不能工作了。只有在为变量使用其他名称时(例如,$query2 ),它才能工作。

作品:

代码语言:javascript
复制
$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
}
}

不起作用:

代码语言:javascript
复制
$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
}
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-18 21:13:02

$result是表示查询结果的句柄。第二个查询覆盖第一个查询的结果,有效地扼杀了第一个查询的结果:

代码语言:javascript
复制
$result = mysql_query($query1);
while($row = mysql_fetch_row($result)) {
    $result = mysql_query(...);
    ^^^^^^^---- overwrite occurs here

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

票数 2
EN

Stack Overflow用户

发布于 2013-11-18 21:12:41

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

这将起作用:

代码语言:javascript
复制
$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
   }
}
票数 3
EN

Stack Overflow用户

发布于 2013-11-18 21:13:03

这是因为您正在使用while in while,它意味着您的第二时间:

代码语言:javascript
复制
$result = mysql_query($query);
while($row2 = mysql_fetch_row($result))

将覆盖您的第一个$result。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20057965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档