我需要帮助我的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
但字面上没有任何反应。没有错误,但也没有更新。 有谁知道我做错了什么?
感谢您的帮助:)
答案 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注入