2014-03-06 65 views
-1

我們有一個使用PHP訪問WAMP服務器的Android應用程序。所有查詢,如選擇*等工作正常。但是在特定條件下插入查詢無法正常工作, 當WAMP在數據庫中已經有一些數據時,我們無法在數據庫中插入新數據。但是,當WAMP服務器沒有任何現有數據時,請成功插入查詢工作。以下是PHP代碼中,我們使用的是插入數據,插入查詢無法在WAMP服務器中工作

<?php 

/* 
* Following code will create a new product row 
* All product details are read from HTTP Post Request 
*/ 

// array for JSON response 
$response = array(); 

// check for required fields 
if (isset($_POST['UserName']) && isset($_POST['UserID']) && isset($_POST['Password']) && isset($_POST['Age'])&& isset($_POST['ContactNumber']) && isset($_POST['expiryDate'])) { 

    $UserName = $_POST['UserName']; 
    $UserID = $_POST['UserID']; 
    $Password = $_POST['Password']; 
    $Age = $_POST['Age']; 
    $ContactNumber = $_POST['ContactNumber']; 
    $expiryDate = $_POST['expiryDate']; 

    // include db connect class 
    require_once __DIR__ . '/db_connect.php'; 

    // connecting to db 
    $db = new DB_CONNECT(); 

    // mysql inserting a new row 
    $result = mysql_query("INSERT INTO normaluser(UserName, UserID, Password,Age,ContactNumber,expiryDate) VALUES('$UserName', '$UserID', '$Password','$Age','$ContactNumber','$expiryDate')"); 

    // check if row inserted or not 
    if ($result) { 
     // successfully inserted into database 
     $response["success"] = 1; 
     $response["message"] = "New user successfully created."; 

     // echoing JSON response 
     echo json_encode($response); 
    } else { 
     // failed to insert row 
     $response["success"] = 0; 
     $response["message"] = "Oops! error is there."; 

     // echoing JSON response 
     echo json_encode($response); 
    } 
} else { 
    // required field is missing 
    $response["success"] = 0; 
    $response["message"] = "Required fields is missing"; 

    // echoing JSON response 
    echo json_encode($response); 
} 
?> 

你們可以請幫忙使用,以解決這個問題呢?

+2

你沒有錯誤檢查。使用'mysql_error()'來查看錯誤是什麼。 –

+1

建議使用mysql_real_escape_string()來清理輸入值。否則,SQL注入是可能的。 – frank1fr

+0

[有人說'SQL注入'?](http://xkcd.com/327/) – MisterBla

回答

1

忽略已棄用的mysql_ *的使用,並且缺乏對數據的清理。

您不檢查該用戶是否已經在數據庫中。假設您的列中至少有一列是唯一鍵或主鍵,那麼如果您嘗試創建兩次相同的用戶,則此查詢可能會失敗。

但是,無論如何爲代碼添加一些有用的錯誤處理,您都會被告知確切的問題是什麼。這有點簡單,因爲你可能不想把這些錯誤發回給用戶,但它會告訴你從MySQL返回的確切錯誤:

$result = mysql_query("INSERT INTO normaluser(UserName, UserID, Password,Age,ContactNumber,expiryDate) 
         VALUES('$UserName', '$UserID', '$Password','$Age','$ContactNumber','$expiryDate')"); 

// check if row inserted or not 
if ($result) { 
    // successfully inserted into database 
    $response["success"] = 1; 
    $response["message"] = "New user successfully created."; 

    // echoing JSON response 
    echo json_encode($response); 
} else { 
    // failed to insert row 
    $response["success"] = 0; 
    $response["message"] = 'Database error ' . mysql_errno() . ' ' . mysql_error(); 

    // echoing JSON response 
    echo json_encode($response); 
}