我的Logcat顯示我(正確)所有我想要返回的消息,但是當我要求代碼在另一個php頁面上顯示相同的東西時,它完全是怪人。爲什麼php頁面在LogCat中不顯示相同的內容?
請注意,此代碼是$ 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 where touser ='r'
I/RESPONSE(4591):{「mailbox」:[{「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」, 「至用戶」: 「」,「消息「:」「,」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」:「」 「時間戳」: 「2013年4月13日15時45分21秒」}]}
編輯:
正如你所看到的,它返回的所有TOUSER記錄T帽子是空白的(或空白)。我對這種行爲的解釋是,在代碼運行時,$ from變量實際上是'r'(這就是爲什麼它正確保存在logcat中),但是執行代碼之後目前在$ from中沒有值,所以它只是輸出$ from = null的結果。
php應該這樣做嗎?我認爲,當時執行和回顯的任何代碼都會在頁面上輸出,並保留在那裏,直到我重新運行代碼。對於如何解決這個問題,有任何的建議嗎?
EDITED
所有這一切的關鍵是使用JSONParser代碼我從here了,從數據庫中獲取特定行,並把它們放進了android的數據庫到特定的領域。我試過修改我的JSONParser代碼來使用BackgroundTask,比如this,你可以看看this。
這是項目試圖實現的目標:第一個用戶可以發送消息到服務器數據庫,包含'from'(這將是user1的單元格編號),'to'(這將是目的地或user2的編號)和一條消息(這是他的位置)。第二用戶使用輪詢服務定期從數據庫中檢索他的消息,即數據庫中的所有條目將放在「到」字段中,並將這些條目存儲到手機的數據庫中(並自動從服務器的數據庫中刪除這些條目)。我想,除了從服務器數據庫中獲取特定條目的部分之外,一切基本上都在工作。
我決定使用JSONParsing,因爲它可以接收一組數據庫條目並從每個條目中創建一個字符串,從而更容易將其存儲在我的Android數據庫中。但這是它缺乏的地方..找到一種方式來檢索特定的分貝條目..我還沒有想出一個辦法做到這一點。任何幫助將我指向正確的方向?
鑑於test.php結果中的所有'touser'都是空白的,所以感覺就像沒有'$ from'的值......你確定你正在POST你的腳本嗎? –
@PhillSparks - Yeah $ from確實有一個值,從logcat中的這一行可以看出:I/RESPONSE(4591):SELECT * FROM messages where'touser ='r'...'r'是$從。 – Keegs
@PhillSparks - 但另一方面,當我用'r'代替'$'時,在php代碼中:'$ query =「SELECT * FROM messages where'touser ='$ from'」;'then test.php輸出正確的東西。 – Keegs