gpt4 book ai didi

php - MySQL、Android 和 PHP 问题

转载 作者:行者123 更新时间:2023-11-29 00:48:08 25 4
gpt4 key购买 nike

我可以找到大量示例,您可以在这些示例中使用名称值对从 Android 查询 MySQL 数据库,例如 this example ,我可以让它正常工作。

然而,现在我想让它变得更简单,这就是我遇到问题的时候。我只想使用下面的查询返回整个表。

<?php
mysql_connect("localhost","username","pw");
mysql_select_db("db");

$q=mysql_query("SELECT field FROM table");

while($e=mysql_fetch_assoc($q))
$output[]=$e;

print(json_encode($output));

mysql_close();

?>

所以没有使用 $_REQUEST 行,这是主要区别。当我在 Web 浏览器中运行 PHP 代码时,它本身运行良好。

问题出现在下面的 Android 代码中。它在运行最后的 httpclient.execute 行时失败。

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://site.com/db.php");
//httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);

返回的错误是android.os.NetworkOnMainThreadException。

我不知道这里是否需要 setEntity 部分,因为我没有需要由 PHP 脚本接收的实际 nameValuePairs?我已经尝试过像上面那样评论它并设置一些虚拟值对,它不会以任何方式连接。我怀疑 setEntity 部分是问题所在。在这种情况下我将如何设置实体?或者这是一个不同的问题?谢谢。

更新:我尝试如下将 HttpPost 更改为 HttpGet,但仍然遇到同样的问题。

HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://site.com/db.php");
//httpget.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httpget);

最佳答案

根据这个问题:How to fix android.os.NetworkOnMainThreadException?

当您在主线程上执行网络操作时会抛出该异常,这是一种不好的做法,因为它会损害您应用的响应能力。您应该使用后台线程来完成这项工作。

关于php - MySQL、Android 和 PHP 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9656520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com