`$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']));
}当我删除'//*‘语句时,我得到了不同步错误....保留这两行代码可以帮助我运行代码,但是代码会变得很慢,因为对于每次循环迭代,数据库连接都会关闭并重新打开。请告诉我一个替代方案..。我真的会很感谢你
发布于 2014-05-12 18:45:58
发生的情况是,当您尝试用新数据填充数据(循环中的查询)时,mysql和PHP之间的缓冲区中有数据。
你需要做的是
点击此处了解更多信息http://dev.mysql.com/doc/apis-php/en/apis-php-mysqlinfo.concepts.buffering.html
发布于 2014-05-13 22:13:27
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循环...现在它不是必需的
发布于 2014-05-12 18:17:41
在实际完成之前不要关闭数据库连接如何?
您应该只与任何给定的数据库服务器建立一个连接(所以基本上,在脚本中只建立一个连接,除非您正在使用复杂的多DB服务器设置)
https://stackoverflow.com/questions/23606365
复制相似问题