【发布时间】:2013-04-13 20:21:19
【问题描述】:
我的 Logcat (正确地)向我显示了我想要返回的所有消息,但是当我要求代码在另一个 php 页面上显示相同的内容时,它就完全不正常了。
注意是这段代码,$from = "r", and $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","时间戳":"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 应该这样做吗?我认为当时执行和回显的任何代码都会在页面上输出并留在那里,直到我重新运行代码。有关如何解决此问题的任何建议?
已编辑
所有这一切的重点是使用我从here 获得的 JSONParser 代码,从数据库中获取特定的行,并将它们放入 android 的数据库中的特定字段中。我已经尝试修改我的 JSONParser 代码以使用像 this 这样的 BackgroundTask,您可以查看 this。
这是项目试图实现的目标:第一个用户可以将消息发布到服务器数据库,其中包含“来自”(将是用户 1 的手机号码)、“到”(将是目标或用户 2 的号码) ,和一条消息(这是他的位置)。第二个用户使用轮询服务定期从数据库中检索他的消息,即数据库中他的号码将在“to”字段中的所有条目,并将这些条目存储到他手机上的数据库中(并自动从服务器的数据库)。我认为,除了我从服务器的数据库中获取特定条目的部分之外,一切基本上都在工作。
我决定使用 JSONParsing,因为它可以获取一个数据库条目数组并从每个条目中生成一个字符串,从而更容易存储在我的 android 数据库中。但这是它缺乏的地方..找到一种方法来检索数据库的特定条目..我还没有找到一种方法来做到这一点。有什么帮助可以为我指明正确的方向吗?
【问题讨论】:
-
鉴于 test.php 结果中的所有
touser都是空白的,感觉就像没有$from值...您确定要在脚本中发布 from 吗? -
@PhillSparks - 是的 $from 确实有一个值,从 logcat 中的这一行可以看出:I/RESPONSE(4591): SELECT * FROM messages WHERE touser='r'... 'r' 是 $from。
-
@PhillSparks - 但另一方面,当我用 'r' 替换 '$from' 时,在 php 代码中:
$query = "SELECT * FROM messages WHERE touser='$from'";然后 test.php 输出正确的东西。 -
使用 test.php 和 logCat 有什么不同?您是从 Android 发帖(我认为这就是 logCat 的位置吗?)并且只是在浏览器中打开 test.php?如果您只是在浏览器中打开 test.php,那么您并没有发布,所以 $_POST 不会有任何值。
-
@PhillSparks - 好的,你所有的问题都是正确的。如果您愿意阅读结尾,我已经修改了我的问题。
标签: java php android echo logcat