【问题标题】:Connect Android app data with Website database将 Android 应用数据与网站数据库连接起来
【发布时间】:2015-11-23 03:49:12
【问题描述】:

我正在为 android 构建软键盘,它具有我想上传到我的网站服务器上我的数据库中的用户行的设置,然后当用户更改设备并登录时,设置是相同的。我以前使用过 SQL,但我没有将 android 应用程序连接到我的网站数据库的经验。我在网上找到了一些东西,但它给出了我插入数据库中的字符串示例的空结果。这是我要在数据库中运行测试的表:

名称 |详情

拉扎尔 |名字

果冻 |姓氏

岩石 |巴尔博亚

我的托管网站服务器上有名为 keyboard.php 的 php 脚本,它的外观是这样的:

<?php 
mysql_connect("hostname", "username", "password") or die(mysql_error()); 

mysql_select_db("database") or die(mysql_error()); 

$link= $_GET['link']; 

$query = "SELECT * FROM keyboard WHERE link=" . "'" . $link. "'";
$result =mysql_query($query); 

if($result){
     while($row= mysql_fetch_array( $result )) {
         echo $row['name'] 
         . " " . $row['link'] 
         . " " . $row['time'];
    }
  }
?> 

这是我的SyncDatabse.java

public class SyncDatabase {
public static String getFromDB(String linkToGetData) throws IOException {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    HttpClient httpclient=new DefaultHttpClient();
    HttpGet httpget = new HttpGet("http://www.ecloga.org/keyboard.php?link=" + linkToGetData);
    HttpResponse response = httpclient.execute(httpget);
    String theResponse =  EntityUtils.toString(response.getEntity());

    return theResponse;
}
}

请帮我解决这个问题。提前致谢。问任何你想知道的。

【问题讨论】:

  • 您的字符串 theQuery 是“ecloga.org/keyboard.php?name=rocky”。好吧,如果您测试此 URL,您将得不到任何解释 null 结果的信息
  • 不要简单地将 URL 查询字符串参数(在您的情况下为name)放入 SQL 语句中。阅读“SQL 注入”以了解您为什么不想要这个,永远不要。此外,永远不要抓住NullPointerException,根本不要——而是在它发生时解决它或事先在正确的位置检查null。永远不要捕获异常并且不记录任何有关它的信息。你问为什么你的代码是错误的,但首先你应该听编译器和运行时。
  • 如果可能的话,我应该将什么设置为 theQuery 以使我的应用程序访问我网站上的 php 文件或直接访问我的网站数据库? @user3641702
  • 好的,我删除了NullPointerException,我写了一个代码来检查字符串是空还是空。我该怎么办? @Risadinha
  • keyboard.php 我使用 $_GET 来接收数据。 @SubinThomas

标签: java php android mysql database


【解决方案1】:

测试这个 php 代码,因为你的结果是空的:

if (isset ($_GET ["name"])){
    $name = mysql_real_escape_string($_GET ["name"]);
    $query = htmlentities ($query);
    mysql_query("SET NAMES 'utf8'");
    $query = mysql_query("SELECT * FROM my_table WHERE name = '$name');
    $result = mysql_query($query);


    $rows = array();

            if (!empty($result)){
                while($r = mysql_fetch_assoc($result)){
                        // $rows[] = $r; has the same effect, without the superfluous data attribute
                        $r["Column1"] = $r["Column1"];
                        $r["Column2"] = $r["Column2"]; //You can add many columns like the table have
                        $rows[] = $r;                       
                        //$rows[] = array('Deal' => $r);
                    }

                    echo json_encode($rows);

                }

}

【讨论】:

  • 你的php不会返回任何东西,首先验证你的php代码并在问题中发布结果
  • 我已经更改了 php 脚本以及 java 代码。问题已解决,但未使用您的答案。还是谢谢。
  • @laky.brat 您能否发布您的解决方案(android 和 php)作为答案。我已经被同一个问题困扰了一个多星期,但仍然没有发现任何有用的东西。 :)
  • @edwinj 在其他问题中提供您的 json 字符串和您的 php 代码,而不是同样的问题。
  • @Santiago 别担心,我找到了解决方案:stackoverflow.com/questions/32883596/… 无论如何感谢您的回复 :)
猜你喜欢
  • 1970-01-01
  • 2012-05-15
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
相关资源
最近更新 更多