MySQL PHP没有更新

时间:2012-07-04 10:14:52

标签: php mysql sql

我需要帮助我的PHP代码,它应该更新我的mysql数据库。我这样试过:

<?php mysql_connect("servername","name","passwort"); 
mysql_select_db("dbname"); 
$name = $_GET["name"]; $points = $_GET["points"]; 
$query = "UPDATE highscore SET points=".$points." WHERE name='".$name."'";

mysql_query($query) 
mysql_close(); ?>

我打电话给:

http://.../write.php?name=%22Alexa%20Bomkamp%22&points=%22100

但字面上没有任何反应。没有错误,但也没有更新。 有谁知道我做错了什么?

感谢您的帮助:)

4 个答案:

答案 0 :(得分:1)

首先,您应该检查$_GET是否获得了您调用脚本的参数。 print_r($_GET);就足够了。

其次,你的代码看起来很可怕。您缺少换行符等等。更可怕的是,你对SQL injection 完全易受攻击从不让SQL执行包含未转义和未检查用户输入的命令。只需添加一些参数,就很容易丢失数据库。

另一件事是,从您的代码判断,您使用的是不好的做法。如果我输入数据库的新名称该怎么办?在这种情况下,UPDATE语句将失败,您需要使用INSERT INTO代替。

<?php
$link = mysql_connect( 'servername', 'loginname', 'password' ) or die('Unable to connect.');
mysql_select_db( 'database', $link ) or die('Unable to select database.');

$query = 'UPDATE `highscore` SET `points`=' .mysql_real_escape_string($_GET['points']). ' WHERE `name`="' .mysql_real_escape_string($_GET['name']). '";';
mysql_query( $query, $link );
mysql_close($link);
?>

此外,您的请求中还有一个%22。使用?name=Alexa Bompkamp&points=100调用代码。

答案 1 :(得分:0)

网址错误%22 需要 htmlentity避免它,数字也包含%22

使用此网址调用:    ?... / write.php名称=的Alexa%20Bomkamp&安培;点= 100

答案 2 :(得分:0)

试试这段代码:

<?php
$conn = mysql_connect("servername","name","passwort"); 
mysql_select_db("dbname");
if (mysql_error()) {
    echo "<br />". mysql_errno(). " : ". mysql_error();
}
$name = $_GET["name"]; $points = $_GET["points"]; 
$query = "UPDATE highscore SET points=$points WHERE name='$name'";

mysql_query($query, $conn);
mysql_close($conn);
?>

答案 3 :(得分:-1)

如果您在发送请求时对参数进行编码,请解码。还有一件事,请在为参数分配mysql_real_escape_string()值时使用get来避免SQL注入