2013-04-24 250 views
1

基本上我正在嘗試使用PHP來更新MySQL數據庫,並且正在用HTML表單測試它。用PHP更新MySQL數據庫

我打算在android應用程序中使用這個值,所以這些值是從哪裏獲取的,但是目前我只是用HTML表單測試來測試PHP代碼。當我使用HTML表單進行測試時,當前沒有更新適當的數據。

我的代碼導致這種情況有什麼問題?

PHP代碼:

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

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

// check for required fields 
if (isset($_POST['PlayerID']) && isset($_POST['Score']) && isset($_POST['LastHolePlayed'])&&  
isset($_POST['Overall'])) { 

$playerid = $_POST['PlayerID']; 
$score = $_POST['Score']; 
$lastholeplayed = $_POST['LastHolePlayed']; 
$overall = $_POST['Overall']; 

// include db connect class 
require('db_connection.php'); 



// mysql inserting a new row 
$result = mysql_query("UPDATE `week1` SET Score = `$score`, LastHolePlayed = `$lastholeplayed`, 

Overall` = $overall` WHERE PlayerID = `$playerid`"); 


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

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

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

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

的html代碼:

<form action="http://localhost/realdeal/updateplayer.php" method="POST"> 
PlayerID <input type="text" id='PlayerID' name='PlayerID'><br/><br/> 
Score <input type="text" id='Score' name='Score'><br/><br/> 
LastHolePlayed <input type="text" id='LastHolePlayed' name='LastHolePlayed'><br/><br/> 
Overall <input type="text" id='Overall' name='Overall'><br/><br/> 

    &nbsp; <input type="submit" value="submit"> 

</form> 
+0

列名 - 反引號,值 - 單引號 – 2013-04-24 20:47:35

+0

確定列名是否正確? – auicsc 2013-04-24 20:54:59

+0

我相信所以每個輸入值都是代表mysql數據庫中的一列正確嗎? – dGray 2013-04-24 20:57:43

回答

0

您所查詢的分隔符,需要加以糾正:

$result = mysql_query("UPDATE `week1` SET Score = '$score', `LastHolePlayed` = '$lastholeplayed', `Overall` = '$overall' WHERE `PlayerID` = '$playerid'"); 

注意列周圍的反引號(`)和圍繞值的單引號(')。

此外,當您正在調試的查詢時,總是檢查MySQL的錯誤:

$result mysql_query(...) or die("Query failed: " . mysql_error()); 

最後,你應該知道你的查詢讓你對SQL注入攻擊開放。在將其包含在查詢中之前,始終清理輸入數據。

+0

感謝您的建議我收錄了調試查詢,它說我收到一個錯誤 - 'WHERE'PlayerID '='6''在第1行 – dGray 2013-04-24 21:09:29

+0

@ user2243017您在6(''$ overall'')的值之前缺少一個單引號 – 2013-04-24 21:11:12

+0

感謝解決了這個問題,但我認爲這個陳述並沒有做我想做的事,我正在嘗試更新PlayerID等於已輸入的PlayerID的行,因爲它似乎在此處使用列名稱。 – dGray 2013-04-24 21:17:48

2

改變您的查詢:

$result = mysql_query("UPDATE `week1` SET `Score` = '$score', `LastHolePlayed` = '$lastholeplayed', `Overall` = '$overall' WHERE `PlayerID` = '$playerid'"); 
+0

謝謝我將其更改爲此,但數據庫仍未更新。我得到了輸出 - {「success」:0,「message」:「發生了錯誤。」} – dGray 2013-04-24 20:51:20

0

你的sql語句是錯誤的。你可以按照上面的描述寫,或者你可以直接寫下沒有任何撇號符號的語句 - $ result = mysql_query(「UPDATE week1 SET Score = $ score,LastHolePlayed = $ lastholeplayed,Overall = $ WHERE PlayerID = $ playerid」) ;

此外,您能否解釋「適當的數據未被更新」是什麼意思。如果你給出/陳述你得到的錯誤,那將會更加清楚。

+0

感謝您的建議 – dGray 2013-04-24 22:00:20