PHP MySQL 更新表不工作

标签 php mysql database

<分区>

所以我正在尝试做一个简单的 MySQL 数据库/表更新,但有些东西不起作用,我无法弄清楚是什么。我会放代码:
morepoints.php(处理加点):

    <?php
if(!isset($_COOKIE["name"]))
{
    echo "<a href='index.php'>Username/points cookie not existent! Please login!</a>";
}
$con=mysql_connect("sqlserverip","name","password");
if(!$con)
{
    echo "Error while connecting to the MySQL server: " . mysql_error();
}
mysql_select_db("gendb1",$con);
$name=$_COOKIE["name"];
$pts=$_COOKIE["points"];
mysql_query("UPDATE  \"users\"  SET  \"pts\" =\"" . $pts . "\" WHERE name=\"" . $name . "\"");
echo "<div id='wrapper'>Updated database...checking if values match...</div>";
$result=mysql_query("SELECT * FROM users");
 while($row=mysql_fetch_array($result)
 {
            if($row["name"]==$name)
            {
                if($row["pts"]==$pts)
                {
                    echo "<a href=\"index.php\">Points awarded! Please login again.</a>";
                    mysql_close($con);
                }
            }
  } 
    ?> 

如果您想要设置 cookie 的登录页面,就在这里

    <?php
$con=mysql_connect("mysqlserverip","name","password");
if(!$con)
{
    echo "Connection to the MySQL server failed successfuly! " . mysql_error();
}
mysql_select_db("gendb1",$con);

$result=mysql_query("SELECT * FROM users");

//Getting Login Form Data
$name=$_POST['u'];
$pass=$_POST['p']; 
$points;
//$valid=1;
if($name=="" or $pass=="")
{
    echo "<div id=\"wrapper\">Name/pass cannot be blank. <a href=\"javascript:history.go(-1)\">Try again</a></div>";
}
while($row=mysql_fetch_array($result))
{
    if($row['name']==$name and $row['pass']==$pass)
    {
        setcookie("name",$row['name'],time()+300);
        setcookie("points",$row['pts'],time()+300);
        echo "<div id=\"wrapper\">Login successful! <a href=\"user.php\">Go to your page</a></div>";
        goto done;
        break;
    }
}
echo "<script>history.go(-1);</script>";
done:
    ?>

已解决:我得到的是 HTTP 错误 500.0 - 内部服务器错误,错误代码:0x00000000 当由于我的脚本中的某些错误而无法解释(或其他)PHP 代码时,我通常会遇到这种情况 仍然:数据库/表未更新(运行脚本时未抛出错误,但数据库似乎未更新)

最佳答案

  • 使用反引号 (`) 而不是引号 (") 来指定数据库/表/列名称。 以前在这个帖子里看到过这个答案,后来被删了。虽然这是一个正确的答案。

  • 同时转义您的输入以防止 sql 注入(inject)。并检查查询是否运行正常。

  • 最后检查查询是否正常执行。

所以改变

mysql_query("UPDATE  \"users\"  SET  \"pts\" =\"" . $pts . "\" WHERE name=\"" . $name . "\"");

进入

mysql_query("UPDATE  `users`  SET  `pts` =\"" . mysql_real_escape_string($pts) . "\" WHERE `name`=\"" . mysql_real_escape_string($name) . "\"")
    or die ("Update failed: " . mysql_error() );

如果查询失败,最后一部分将输出错误消息。 (请注意,我删除了第一行末尾的分号 (;),因此“or die”是同一句话的一部分。

  • 编辑 你真的在提高 $pts/$points 吗?看来您根本没有增加它。你所说的只是 $pts=$_COOKIE["points"]; 在一个脚本中而只是 $points; 在另一个脚本中。在第一个脚本中至少应该有 $pts++; 吗??? (在设置 $pts 之后和运行更新查询之前。)

关于PHP MySQL 更新表不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15818674/

相关文章:

php - 查询列中的多个值

php - 如何打破插入查询,在插入触发mysql之前

sql - 更新表 1 中的数据,其中表 2 中有重复数据

php - 如何删除codeigniter中的特定行?

php - phpdoc的多个子包

php - Zend 框架查询 where 子句

sql - 如果,否则如果,否则不工作只有当和其他工作

mysql - 查找每个 people_id 对应的具有最大计数的 role_id

php - 在 SQL 字段中有一个数组。如何系统地展示它?

MySQL查询不使用索引