我的 Logcat (正确地)向我显示了我想要返回的所有消息,但是当我要求代码在另一个 php 页面上显示相同的内容时,它完全不正常。
请注意,这是此代码,$from = "r" 和 $to = ""。
这是我的代码:
<?php
session_start();
/* connect to database */
$db = mysql_connect("localhost", "root", "root");
if (!$db)
die('could not connect');
mysql_select_db('androidp2p')
or die("could not select database");
/* variables */
$from = mysql_real_escape_string($_POST['from']);
$to = mysql_real_escape_string($_POST['to']);
$message = mysql_real_escape_string($_POST['message']);
/* conditional code */
if (isset ($POST['to']))
{
/* user wants to send a message */
$query = "INSERT INTO messages (fromuser, touser, message) VALUES ('$from', '$to', '$message')";
mysql_query($query)
or die("\n\ndatabase error!\n". mysql_error());
echo "ok. Messages have been saved.";
}
else //if (!isset ($POST['to']))
{
/* user wants to retrieve his messages */
$query = "SELECT * FROM messages WHERE touser='$from'";
/* echo test 1 */
echo $query;
$result = mysql_query($query)
or die("\n\ndatabase error!\n". mysql_error());
$mailbox = array();
while($row = mysql_fetch_assoc($result))
{
$mailbox[] = $row;
}
/* echo test 2 */
echo "{ \"mailbox\":".json_encode($mailbox)." }";
$name = "{ \"mailbox\":".json_encode($mailbox)." }";
$_SESSION['myValue']=$name;
}
?>
在第 2 页(test.php):
<?php
session_start();
echo $_SESSION['myValue'];
?>
以下是数据库中的条目:
这是我的 logCat:
I/RESPONSE(4591): SELECT * FROM messages WHERE touser='r'
I/RESPONSE(4591): { "邮箱":[{"id":"117","fromuser":"qw","touser":"r","message":"zx","timestamp": “2013-04-13 01:30:59”}] }
现在上面我想让你看到 touser 是 r。这个条目(在数据库中)是我想要返回的,即字段“touser”包含值“r”的所有条目。
现在,这是我的 test.php 页面:
{ "邮箱":[{"id":"132","fromuser":"r","touser":"","message":"","timestamp":"2013-04-13 15:45 :03"},{"id":"123","fromuser":"r","touser":"","message":"","timestamp":"2013-04-13 13:41: 23"},{"id":"122","fromuser":"r","touser":"","message":"","timestamp":"2013-04-13 13:30:53 "},{"id":"133","fromuser":"","touser":"","message":"","timestamp":"2013-04-13 15:45:21"} ] }
编辑:
如您所见,它返回了所有空白(或 null)的 touser 条目。我对这种行为的解释是,当代码运行时,$from 变量实际上是“r”(这就是它正确保存在 logcat 中的原因),但是在代码执行之后,$from 中目前没有任何值,所以它只是输出 $from = null 的结果。
php应该这样做吗?我认为当时执行和回显的任何代码都会在页面上输出并留在那里,直到我重新运行代码。对于如何解决这个问题,有任何的建议吗?
已编辑
这一切的重点是使用我从这里得到的 JSONParser 代码,从数据库中获取特定的行,并将它们放入 android 的数据库中的特定字段中。我已经尝试修改我的 JSONParser 代码以像这样使用 BackgroundTask ,你可以看看这个。
这是该项目试图实现的目标:第一个用户可以将消息发布到服务器数据库,其中包含“来自”(将是用户 1 的手机号码)、“到”(将是目标或用户 2 的号码)和消息(这是他的位置)。第二个用户使用轮询服务定期从数据库中检索他的消息,即数据库中他的号码将在“to”字段中的所有条目,并将这些条目存储到他手机上的数据库中(并自动从服务器的数据库)。我认为,除了我从服务器的数据库中获取特定条目的部分之外,一切基本上都在工作。
我决定使用 JSONParsing,因为它可以获取一个数据库条目数组并从每个条目中生成一个字符串,从而更容易存储在我的 android 数据库中。但这是它缺乏的地方..找到一种方法来检索数据库的特定条目..我还没有找到一种方法来做到这一点。有什么帮助可以指出我正确的方向吗?