2015-05-20 59 views
1

我有一個簡單的MySQL表在我的服務器上有4個字段。 pid,aid,unameactive。我通過我的Android應用程序將uname變量發送到我的PHP代碼,並且我想將布爾active列從1更改爲0,其中uname字段等於我通過應用程序發送的值。這是我的代碼: 我從Android應用程序發送的值是收到這樣的index.php中並傳遞到其他功能DB_Functions.phpSQL更新方法返回JSONException

else if ($tag == 'notpart'){ 

    $uname = $_POST['uname']; 
    $notpart = $db->notpart($uname); 

    if (!empty($notpart)) { 
      // stored successfully 
     $response["success"] = 1; 
     //$response["notpart"]["aid"] = $notpart["aid"]; 
     $response["notpart"]["uname"] = $notpart["uname"]; 

      echo json_encode($response); 
     } 
     else { 
      // failed to store 
      $response["error"] = 1; 
      //$response["error_msg"] = "JSON Error occured"; 
      $response["error_msg"] = mysql_error(); 
      echo json_encode($response); 
     } 


} 

在DB_Functions.php功能: 更新:已更改$uname'$uname'。現在IllegalStringOffset警告走了,但JSONException存在

public function notpart($uname) { 
    $uuid = uniqid('', true); 
    echo $uname; 
    $result = mysql_query("UPDATE part SET active='0' WHERE uname = $uname"); 
    // check for successful store 
    if ($result) { 
     //get event details 
     $pid = mysql_insert_id(); // last inserted id 
     $result = mysql_query("SELECT * FROM part WHERE pid = $pid"); 
     //return event details 
     return mysql_fetch_array($result); 
    } else { 
     return mysql_error(); 
    } 
} 

但我得到的非法串偏移警告,不進行任何更改到MySQL表進行。

這裏的logcat的:

05-20 21:57:26.958: E/JSON(17919): wwwww<br />n<b>Warning</b>: Illegal string offset 'uname' in <b>C:\xampp\htdocs\shareity\shareity\index.php</b> on line <b>445</b><br />n{"tag":"notpart","success":1,"error":0,"notpart":{"uname":"U"}}n 
05-20 21:57:26.958: E/JSON Parser(17919): Error parsing data org.json.JSONException: Value wwwww<br of type java.lang.String cannot be converted to JSONObject 

我試圖isset!empty方法來嘗試發送過非法偏移誤差,但毫無效果。有人可以告訴我有什麼問題嗎?由於

回答

1
$result = mysql_query("UPDATE part SET active='0' WHERE uname = $uname"); 

試試這個:

$result = mysql_query("UPDATE part SET active='0' WHERE `uname` = '$uname'"); 

還要注意,你設置活躍於'0',不0。如果活動字段類型爲INT,則將其更改爲0。

此外,你問你的SQLInjection。使用mysql_real_escape_string()

此外,不使用mysql(不建議使用)擴展名。切換到mysqliPDO

最後要解決的問題是刪除echo $uname;它打破了json響應,將uname添加到輸出。這可能會破壞你的json。

+0

該字段實際上是BOOLEAN。它會起作用嗎? –

+0

布爾值使用TRUE或FALSE或1或0,如果你想使用數值但不是'0' – Grzegorz

+0

好吧,我將字段類型更改爲INT。並使用0而不是'0'。現在,在使用''uname''而不是'$ uname'後,String偏移警告消失了,但是現在我得到一個JSON錯誤,提示uname的值(java.lang.String不能轉換爲JSONObject) –