2013-04-24 251 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