gpt4 book ai didi

php - 如何通过 PHP 将数据从 PostgreSQL 发送到 Android?

转载 作者:行者123 更新时间:2023-11-29 12:25:40 24 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,其中包括与 PostgreSQL 数据库的通信(上传和下载)。我想使用 PHP 脚本从数据库中检索数据。

表名为“table”,列为“id”、“username”和“title”。

在一个非常简单的情况下(表中的一个条目),这对我有用:

$statement = $pdo->prepare("SELECT * FROM table");
$result = $statement->execute();
$fetched= $statement->fetch();

$echo = array();

array_push($echo,array(
"id"=>$fetched['id'],
"username"=>$fetched['username'],
"title"=>$fetched['title']
));

echo json_encode(array("result"=>$echo);

Android 中的数据接收使用

JSONObject ob = new JSONObject(response);

我可以将数据读取为 JSON 对象。

但是,我也遇到过需要从表中获取多个条目的情况。我阅读了很多教程,但它们都有不同的方法。我尝试了以下方法:

$statement = $pdo->prepare("SELECT * FROM table");
$result = $statement->execute();
$fetched= $statement->fetch();

$echo = array();

while ($row = $fetched) {
$row_array['id'] = $row['id'];
$row_array['username'] = $row['username'];
$row_array['title'] = $row['title'];

array_push($echo, $row_array);
}

echo json_encode(array("result"=>$echo);

但是这种方式总是返回null。老实说,我也不明白 $row 在这种情况下的确切作用。

你知道问题出在哪里吗?

非常感谢您的帮助!

编辑:我得到一个空结果意味着我第一次尝试从 Android Studio 中的输入流访问返回值时得到一个 NullPointerException。错误看起来像这样:

08-26 17:17:16.605 5278-5278 E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.sainz.example.RandomActivity$1LoginAsync.onPostExecute(RandomActivity.java:101)
at com.example.sainz.example.RandomActivity$1LoginAsync.onPostExecute(RandomActivity.java:40)
at android.os.AsyncTask.finish(AsyncTask.java:631)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4867)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)

最佳答案

您的代码的问题是您正在调用 fetch method只有一次,而不是在循环中调用它(每行一次获取),如:

$statement = $pdo->prepare("SELECT id, username, title FROM table");
$statement->execute();

$echo = array();

while ($row = $statement->fetch()) {
$row_array = array();
$row_array['id'] = $row['id'];
$row_array['username'] = $row['username'];
$row_array['title'] = $row['title'];

array_push($echo, $row_array);
}
$statement = null;

echo json_encode(array("result"=>$echo);

另一种选择是使用 fetchAll method ,可能使用 PDO::FETCH_CLASS,并立即完成 $echo 数组对象。

关于php - 如何通过 PHP 将数据从 PostgreSQL 发送到 Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39168971/

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