-1

我需要有关我的 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

4 回答 4

1

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

其次,您的代码看起来很糟糕。您缺少换行符,等等。更可怕的是,你完全易受SQL注入攻击。永远不要让 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

于 2012-07-04T10:25:00.280 回答
0

url 错误%22需要 htmlentity 避免它并且数字也包含%22

使用此网址调用: .../write.php?name=Alexa%20Bomkamp&points=100

于 2012-07-04T10:22:00.197 回答
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);
?>
于 2012-07-04T10:23:57.280 回答
-1

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

于 2012-07-04T10:25:08.497 回答