`$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']));
}
当我删除' // *'语句我失去了同步错误....保持这两行帮助我运行我的代码但代码变慢,因为每次循环迭代数据库连接关闭并重新打开。请给我一个替代......我真的很感激你
答案 0 :(得分:0)
当您尝试使用新数据(循环内部的查询)填充mysql和PHP之间的缓冲区时,会发生什么? 你需要做的是
在这里阅读更多内容 http://dev.mysql.com/doc/apis-php/en/apis-php-mysqlinfo.concepts.buffering.html
答案 1 :(得分:0)
DROP TEMPORARY TABLE IF EXISTS near;
CREATE TEMPORARY TABLE near
我在geodist()程序中添加了这两行。 它创建一个名为“near”的临时表,并将结果集存储在其中。 现在这个表可以用如下
$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循环...现在它不是必需的
答案 2 :(得分:-1)
在你真正完成数据库连接之前,如何才能关闭数据库连接?
您应该只与任何给定的数据库服务器建立一个连接(基本上,除非您使用复杂的多数据库服务器设置,否则脚本中的一个连接)