【问题标题】:can't load database while using android application使用android应用程序时无法加载数据库
【发布时间】:2018-01-20 16:12:11
【问题描述】:

我正在为 android 应用程序和网站使用一个数据库。因此管理员可以通过一个管理面板一次更新网站和安卓应用程序。对于 android 应用程序,数据库是通过 API 连接的。问题是只有当我删除与应用程序无关的表时,android 应用程序才能顺利运行。数据库包含 15 个表。其中 3 个表共同用于 android 应用程序和网站。如果我删除除了这 3 个表之外的其余表,android 应用程序运行顺利。但是如果我不删除其他表,android 应用程序几乎不会获取数据。同时,如果我运行网站(在应用程序加载时)网站无法加载。

This site can’t be reached
........took too long to respond.
ERR_CONNECTION_TIMED_OUT

我认为以下代码有问题。

api.php

$con = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8;","$dbuser","$dbpass");

    if(isset($_GET['cat_id'])){
            $result=$con->prepare("SELECT * FROM tbl_news_category c,tbl_news n WHERE c.cid=n.cat_id and c.cid='".$_GET['cat_id']."' ORDER BY n.nid DESC");         
    }
    else if(isset($_GET['latest_news'])){
            $limit=$_GET['latest_news'];
            $result=$con->prepare("SELECT * FROM tbl_news_category c,tbl_news n WHERE c.cid=n.cat_id ORDER BY n.nid DESC LIMIT $limit");            
    }
    else if(isset($_GET['apps_details'])){ 
            $result=$con->prepare("SELECT * FROM tbl_settings WHERE id='1'");       
    }
    else{   
            $result=$con->prepare("SELECT * FROM tbl_news_category ORDER BY cid DESC");         
    }
    $set = array();
    $result->execute();
    $total_records = $result->rowCount();
    if($total_records >= 1){
        while($link=$result->fetch(PDO::FETCH_ASSOC)){
        $set['NewsApp'][] = $link;
      }
    }
     echo $val= str_replace('\\/', '/', json_encode($set)); 
?>

强行终止android应用程序后,网站运行流畅。第一次秋天,我认为这是缓存/连接性差的问题。我更改了互联网连接,清除了缓存,使用了其他设备、PC、浏览器。但是问题解决不了。如果我使用两个数据库,它工作正常。我不想在两个数据库中存储相同的内容。实际上是什么导致了问题,托管服务器或代码??

【问题讨论】:

    标签: php android mysql database


    【解决方案1】:

    您的代码似乎有问题。来自 Android 应用的查询会锁定这些表,您的网站无法在这些表中执行查询。在 Android 应用中为您的查询设置合理的超时时间,然后检查慢查询日志以查看挂起的查询,或者在 Android 应用运行查询时运行查询 SHOW FULL PROCESSLIST; 以查看有问题的查询。

    【讨论】:

    • 请查看更新的代码@onik。我试过了,但正如你所说,我认为问题出在代码中
    • 我无法用这段代码对数据库说些什么,当网站关闭时,您是否看到使用SHOW FULL PROCESSLIST 运行的查询?
    猜你喜欢
    • 2010-12-06
    • 2019-07-24
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多