在输入代码之前我会解释一下我想要做什么, 我有 Android 项目,连接到 MySQL 数据库,并且我的应用程序中有一个密码恢复 Activity ,在此 Activity 中,用户将输入他的电子邮件以获得他的登录信息,因此当用户单击发送时,应用程序将检查是否数据库中是否存在电子邮件,如果是,则发送电子邮件,如果不存在,则通知用户。
现在,在 PHP 方面,一切都会正常,我编写了查询,它返回正确的值。
public function getUName($UEmail) {
if ($UEmail != NULL) {
$data = array();
$sql = "Select UName FROM `user` WHERE `Email`= '" . $UEmail . "'";
$result = $this->db->query($sql);
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$data[] = $row;
}
return $this->_jsonEncode( $data );
}
}
我知道在 PHP 中,如果我想检查 SELECT 语句是否返回值,我会编写如下内容:
if (mysql_num_rows($result) > 0)
但是 Android 端呢?我有这个功能:
private boolean getUserInfo(String uEmail)
{
String getInfo_URL = SERVER_URL + "GetInfo.php?email=" + uEmail;
new CommunicatetoServer().execute(getEmail_URL);
return true;
}
如果 SELECT 语句返回值,我希望此函数返回 true,否则返回 false。
提前谢谢您。
最佳答案
new CommunicatetoServer().execute(getEmail_URL);
您必须以这样的方式实现CommunicatetoServer,以便在执行http请求后,它将获取从服务器接收的数据。
您确实需要在另一个线程中实现 HTTP 请求,例如使用 AsyncTask(或使用外部库进行 http 请求)并使用当 CommunicatetoServer 接收从服务器返回的数据时将触发的回调。
在您的例子中,PHP 脚本返回 JSON 数据。您只需将接收到的 JSON 数据解析为 java 对象表示形式即可。
您可以使用例如 GSON Android 中 JSON 解析库
一些注意事项:
- 你的 PHP 代码非常糟糕。这是不安全的 - 你有 SQL 注入(inject) 漏洞
- 字段“电子邮件”在数据库中是否唯一? (必须是) - 如果是,请使用 fetch_row() 而不是 fetch_array()
关于php - Android - 检查 MySQL 中的 SELECT 语句是否返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29323821/