$query = "select DISTINCT user_info.`uid`, company_info.`uid`, user_info.`fname`, user_info.`lname`, user_info.`profile_pic`, company_info.`name` FROM user_info, company_info where fname like '%$q%' or lname like '%$q%' AND company_info.`uid` = user_info.`uid` LIMIT 5";
while($row = mysql_fetch_assoc(mysql_query($query))){
outputUserImage($row["profile_pic"]);
outputUserFname($row["fname"], $row["uid"]);
outputUserLname($row["lname"]);
outputUserCompany($row["name"]);
}
Run Code Online (Sandbox Code Playgroud)
这个查询有效,但它返回太多结果(重复)并且执行速度很慢.有人能告诉我什么似乎是问题吗?
我看到了问题.你mysql_query()在一个循环内,一遍又一遍地呼唤!
// Don't do this!
while($row = mysql_fetch_assoc(mysql_query($query))){
//-----------------------------^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
相反,首先在循环外执行查询:
// Do the query first
$result = mysql_query($query);
// Check that it succeeded
if ($result) {
// Then fetch rows
while($row = mysql_fetch_assoc($result)){
// Rest of loop...
}
}
// problem with query...
else {
echo mysql_error();
}
Run Code Online (Sandbox Code Playgroud)
您可能正在运行PHP的最大执行时间,因为您的查询一遍又一遍地返回,否则将是无限循环.始终mysql_query()在循环外调用,并在获取结果之前验证它是否已成功完成.