我的MySQL数据库没有更新?

时间:2014-04-19 20:45:25

标签: php mysql

我正在尝试从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; 
    }

1 个答案:

答案 0 :(得分:0)

您的if语句当前正在分配值,而不是测试相等性,您也可以使用其中一个案例转换函数跳过这三个测试...所以if行应该是:< / p>

if(strtolower($answer)=="firefly") {

接下来 - 正如评论中指出的那样 - 您使用的是过时的MySQL库,您应该使用MySQLIPDO

此外,您对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..";
}