【问题标题】:Query makes my page not respond查询使我的页面没有响应
【发布时间】:2013-06-06 18:57:55
【问题描述】:

我不知道为什么,但是我在下面的 MySQL 查询使我的页面没有响应,并且我得到那个框说这个页面变得没有响应。我想知道确保不会发生这种情况的最简单方法是什么。

public function audioplayer($id)
{
    $r_hostname = "192.***.**.***";
    $r_username = "c**";
    $r_password = "*******";
    $link = mysql_connect($r_hostname,$r_username,$r_password);

    $a_hostname = "192.168.***.***";


    $db = mysql_select_db('asterisk', $link);

    $result = mysql_query("SELECT * FROM recording_log WHERE start_time LIKE '".date("Y-m-d")."%' AND filename LIKE 'IL_%-%". $id ."' LIMIT 3",$link);


    #$result = mysql_query("select * from recording_log WHERE filename LIKE 'IL_%-%".$id."'",$link);

    if (!$result) {
            die('Invalid query: ' . mysql_error());
    }   
    if($result != '')
    {
        while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
            foreach($row as $column => $value) {
                $array[type] ="wav";    
                $array[$column]= $value;
            }
        }
    }
    else {
        $linktwo = mysql_connect($a_hostname,$r_username,$r_password);

        $dbtwo = mysql_select_db('asterisk', $linktwo);

        $resulttwo = mysql_query("SELECT * FROM recording_log WHERE start_time LIKE '".date("Y-m-d")."%' AND filename LIKE 'IL_%-%". $id ."' LIMIT 3",$linktwo);

        while($row = mysql_fetch_array($resulttwo, MYSQL_ASSOC)){
            foreach($row as $column => $value) {
                $array[type] ="mp3";
                $array[$column]= $value;
            }
        }
    }
    return json_encode($array);
}

【问题讨论】:

  • 您确定是查询导致了问题吗?您是否尝试过直接对数据库运行查询?如果是这样,花了多长时间,该时间与您的 PHP max_execution_time 配置值相比如何?

标签: php mysql performance select


【解决方案1】:

感觉这里有语法错误:

$array[type] ="mp3";

你的意思是:

$array[$type] ="mp3";
$array["type"] ="mp3";

Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解 prepared statements,并使用 PDOMySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial

【讨论】:

  • @RussellHarrower 即使for ($i = 0; $a < $b; $s++) 也是对的。语法正确。逻辑上不正确!
  • 1.您可能想使用$type,但不小心使用了type。 2.你可能想要一个字符串type作为索引,但不小心使用了type
  • 我投反对票有两个原因。首先,最初的答案是一个问题,但并没有真正解决 OP 关注的缓慢问题。其次(更重要的是)@NullPoiиteя 添加的编辑是垃圾邮件且不相关。这并没有解决无响应的问题。 最好,该编辑应该是评论。更好的是,NullPoiиteя 应该注意该信息已添加到标签 wiki 中,不需要在每个mysql_* 问题上重复。
  • @GeorgeCummins 垃圾邮件和无关。真的???真的???....看到代码又是一个问题......而且它完全可以讲述已弃用的api
  • @GeorgeCummins 这很糟糕。
猜你喜欢
  • 2012-03-01
  • 2017-01-02
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
  • 2018-04-11
  • 1970-01-01
相关资源
最近更新 更多