我正在尝试从php存档更新我的数据库,但我不能: 在您提出问题之前:db中的名称是正确写入的,if也是如此...
<?php
if(isset($_GET["ans"]) && isset($_GET["name"]))
{
include("con.php");
$con = con();
$answer = $_GET["ans"];
$nam = $_GET["name"];
if($answer="firefly" ||$answer="Firefly" ||$answer="FIREFLY")
{
$le=2;
$sc=50;
$update = "UPDATE User SET Level='$le', Score='$sc' where Name = '$nam'";
mysql_query($update,$con);
// header("Location: lv1b.php?n=$nam");
}
else {
echo "try again..." ;
}
}
?>*
这是con.php ......
<?php
function con()
{ $server="localhost"; $user="root"; $pass="";
$con= mysql_connect($server, $user,$pass);
mysql_select_db("games"); return $con;
}
答案 0 :(得分:0)
您的if
语句当前正在分配值,而不是测试相等性,您也可以使用其中一个案例转换函数跳过这三个测试...所以if
行应该是:< / p>
if(strtolower($answer)=="firefly") {
接下来 - 正如评论中指出的那样 - 您使用的是过时的MySQL库,您应该使用MySQLI或PDO
此外,您对SQL注入非常开放,您应该逃避在MySQLi中使用的任何价值,请参阅mysqli_real_escape_string。在您的示例中,这意味着转义$nam
潜在的替代脚本片段(使用MySQLi和上面的if
语句更改)可能类似于:
<?php
$mysqli = new mysqli("localhost", /*username*/"root", /*pass*/"", /*dbname*/);
$name=$mysqli->real_escape_string($_GET["name"]);
if (strtolower($_GET["ans"])=="firefly") {
if (!$mysqli->query("UPDATE user SET level='2',score='50' ".
"WHERE name='$name'")) {
echo "query failed";
} else {
echo "Updated"
}
$mysqli->close();
} else {
echo "try again..";
}