首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令不同步..现在不能在while循环中运行此命令

问命令不同步..现在不能在while循环中运行此命令
EN

Stack Overflow用户
提问于 2014-05-12 18:14:42
回答 3查看 216关注 0票数 0
代码语言:javascript
复制
 `$sql = "call geodist(".$_SESSION['This'].",500)";` //get the ids near you

$result=mysqli_query($GLOBALS['link'],$sql) or die(mysqli_error($GLOBALS['link']));

while($row=mysqli_fetch_assoc($result)) // insert them into nerby table
{

$sql = "INSERT INTO `nearby`(`userid`, `strangerid`) VALUES (".$_SESSION['This'].",".$row['id'].")";
mysqli_close($GLOBALS['link']);                                                      
mysqli_query($GLOBALS['link'],$sql) 
    or die("akash".mysqli_error($GLOBALS['link'])); 
}

当我删除'//*‘语句时,我得到了不同步错误....保留这两行代码可以帮助我运行代码,但是代码会变得很慢,因为对于每次循环迭代,数据库连接都会关闭并重新打开。请告诉我一个替代方案..。我真的会很感谢你

EN

回答 3

Stack Overflow用户

发布于 2014-05-12 18:45:58

发生的情况是,当您尝试用新数据填充数据(循环中的查询)时,mysql和PHP之间的缓冲区中有数据。

你需要做的是

  1. 要么先从缓冲区获取所有数据,然后再将其用于其他查询
  2. 查看如何设置此mysqli连接以无缓冲地获取数据。

点击此处了解更多信息http://dev.mysql.com/doc/apis-php/en/apis-php-mysqlinfo.concepts.buffering.html

票数 0
EN

Stack Overflow用户

发布于 2014-05-13 22:13:27

代码语言:javascript
复制
DROP TEMPORARY TABLE IF EXISTS near;
CREATE TEMPORARY TABLE near

我在我的geodist()过程中添加了这两行。它创建一个名为"near“的临时表,并将结果集存储在其中。现在可以按如下方式使用该表

代码语言:javascript
复制
$sql = "call geodist(".$_SESSION['This'].",".$GLOBALS['RADIUS'].")";            // get the ids near you
         $result=mysqli_query($GLOBALS['link'],$sql) or die(mysqli_error($GLOBALS['link']));


 $sql = "SELECT m.`id`\n"    
        . " FROM `members` m , `already_assigned` a\n"    
        . " WHERE a.`id`=m.`id` and m.`id` <> ".$_SESSION['This']."\n"    
        . " and m.`gender`=".$_SESSION['wants']." and m.`interested_in`=".$_SESSION['gender']." and a.`status`='free'\n"   
        . " and m.`id` IN (SELECT * from `near`)\n"  /*see this line*/    
        . " ORDER BY RAND( ) \n"   
        . " LIMIT 1";

您可以看到,现在我已经删除了while循环...现在它不是必需的

票数 0
EN

Stack Overflow用户

发布于 2014-05-12 18:17:41

在实际完成之前不要关闭数据库连接如何?

您应该只与任何给定的数据库服务器建立一个连接(所以基本上,在脚本中只建立一个连接,除非您正在使用复杂的多DB服务器设置)

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

https://stackoverflow.com/questions/23606365

复制
相关文章

相似问题

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