gpt4 book ai didi

php - 使用android检查mysql数据

转载 作者:行者123 更新时间:2023-11-29 23:20:48 24 4
gpt4 key购买 nike

我遇到了一个奇怪的(至少对我来说)问题。我想检查 Android 设备上的电子邮件地址是否已在我的数据库中。我在服务器端得到了这段代码:

<?php
include('db_connect.php');
$db = new _DB_Connect();
$db->connect();

if(isset($_POST['email'])){

$accountMail = $_POST['email'];
$result = mysql_query("select email from gcm_users;");
$count = mysql_num_rows($result);
while($row = mysql_fetch_array($result)){
if($row['email'] == $accountMail){
echo "E-Mail found";
}else{
echo "Not found";
}
}
}
?>

我将带有 android 的帐户电子邮件发布到文件中。我的邮件在数据库中,我收到回显“找到电子邮件”,并且可以在我的 Android 上看到它。如果电子邮件不在数据库中,我什么也看不到。这是我迄今为止在 Android 上使用的功能:

protected Void doInBackground(String... params) {
try{
String accountMail;
InputStream inputStream;
String status;
//get Account e-mail
accountMail = RegisterDeviceOnRaspberryPiServer.getAccount(context);

//testoutput
System.out.println("Found Mail is: -> " + accountMail);

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://checkRegistration.php");
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("email", accountMail));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse httpResponse = httpClient.execute(httpPost);
inputStream = httpResponse.getEntity().getContent();
status = RegisterDeviceOnRaspberryPiServer.convertInputStreamToString(inputStream);
System.out.println("STATUS: " + status);

}catch (Exception e){
e.printStackTrace();
}

return null;
}

就像我说的,当插入邮件时,STATUS: + status 打印只给我一个响应,但当数据库中没有任何内容时则没有响应。

第二个问题是,是否有更好的方法来检查帐户电子邮件是否在我的数据库中?

最佳答案

1) 问题是 while 循环条件。

while($row = mysql_fetch_array($result)){

仅当至少有 1 个结果时,此循环内的代码才会运行(这是因为 mysql_fetch_array 对于空结果集返回 false)。

如果没有电子邮件,则条件为 false,并且循环内的代码将被跳过。这就是为什么当电子邮件不存在时您什么也看不到的原因

2)我认为您不必担心这个问题的最佳解决方案。你们非常接近。我能想到的最简单的解决方案不需要 while 循环。您可以只使用在 while 循环上方声明的 count 变量。如果查询返回的行数(计数)= 0,则电子邮件不存在,否则存在。

可选额外功能:如果您想检查数据库中是否有重复的电子邮件条目,您可以检查计数是否> 1

Tangent:在使用 SQLite 数据库进行本地存储时,我遇到了类似的问题。基本上,当您查询 SQLite 数据库时,您的结果是一个包含所有行和数据的 Cursor 对象。 Cursor 有一个方法,就像您在 while 循环中使用的方法一样。如果 Cursor 对象为空,很容易忘记它的奇怪行为

希望这有帮助

关于php - 使用android检查mysql数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27323186/

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