PHP页面需要很长时间才能加载

时间:2014-06-24 21:12:43

标签: php html mysql database web

我正在构建我的网站,在其中一个页面中,我使用MySQL和PHP来加载一些信息。虽然与不使用数据库的所有其他页面相比,页面加载需要很长时间。

在我的代码中,我使用了很多次:

$selectMember = mysql_query("SELECT name, nametag FROM members");
$countMembers = mysql_num_rows($selectMember);
[...]
    for($ID = 1; $ID <= $countMembers ; $ID++){
         $member = mysql_query("SELECT name, nametag FROM members WHERE ID = $ID");
         while($row = mysql_fetch_array($member)) {

我认为问题出在代码的这一部分。不想把整个一个因为它有200行。有没有办法让数据库研究更简单和/或使页面加载更快?

4 个答案:

答案 0 :(得分:3)

您只需要:

$member = mysql_query("SELECT name, nametag FROM members");
   while($row = mysql_fetch_array($member)) {

//show results
echo $row['name'];

无意义的循环和每个id的一个查询导致延迟。

答案 1 :(得分:2)

在这种情况下,您不必要地运行查询,并且“内部”查询是错误的。它们只是偶然工作 - 因为你的成员按顺序编号而没有“漏洞”,所以顺序生成的ID 在数据库中查找记录。

如果你这样做:

$selectMember = mysql_query("SELECT ID, name, nametag FROM members");

上面的已经提取您在下面检索的所有数据,并带有ID:

$countMembers = mysql_num_rows($selectMember);

while($row = mysql_fetch_array($selectMember) {
    ....

也就是说,mysql_函数已弃用;你应该使用mysqli_或(恕我直言,更好;但你的里程可能会有所不同)PDO功能。您肯定不希望学习在下一个PHP版本中可能不再存在的数据库策略!

Here你会发现一些关于如何用更新的MySQL释放PDO全部功能的例子。

答案 2 :(得分:0)

你要做的就是这样......

$ids = "(";
for($ID = 1; $ID <= $countMembers ; $ID++){
    $ids.=$ID.",";
 }
$ids = rtrim(",",$ids);
$ids.=")";

     $member = mysql_query("SELECT name, nametag FROM members WHERE ID IN $ids");
     while($row = mysql_fetch_array($member)) { etc etc

但是上述所有内容都是冗余且毫无意义的,因为您已经在$ selectMember变量中获取数据。所以只用一个查询,你已经得到了所有....

 $selectMember = mysql_query("SELECT name, nametag FROM members");
 while($row = mysql_fetch_array($selectMember)) {
      echo $row[0];
      echo $row[1];
      // etc etc
 }

答案 3 :(得分:0)

不确定您为什么要这样做,但有一个查询会这样做:

SELECT name, nametag FROM members
    WHERE ID BETWEEN 1 AND (SELECT COUNT(*) FROM members)