0

我认为我在这里做错了,我对 PHP 很陌生,只使用它通过 WWW 调用将我的数据库与我的客户端软件接口,我有一个插入脚本,它可以工作,但至于我的更新脚本我难倒......这是我尝试过的查询:

最新的:

$query = "UPDATE accounts SET moonscore= ' " . $moonscore . " ', sunscore = ' " . $sunscore . " ' WHERE name = ' " . $name . "';";

我也试过了,过了一会儿我发现这是错误的。

$query = "UPDATE accounts SET moonscore = $moonscore, sunscore = $sunscore WHERE name =$name;

非常感谢所有 PHP 专家的帮助。

4

4 回答 4

0

查看准备好的语句,以避免考虑使用一些花哨的功能来保护您的查询免受注入。http://php.net/manual/en/pdo.prepared-statements.php

这是一个视频,可以让您作为初学者更深入地了解:http ://www.youtube.com/watch?v=_bw54BqS2UE

于 2013-02-08T00:37:26.973 回答
0

尝试,

$query = "UPDATE accounts
          SET    moonscore = '$moonscore', 
                 sunscore = '$sunscore'
          WHERE  name ='$name'";

作为旁注,SQL Injection如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-02-08T00:23:39.770 回答
0

你应该在变量周围使用单引号,试试这个

    $query = "UPDATE accounts SET moonscore = '$moonscore' , sunscore = '$sunscore' WHERE name ='$name';

提示:尝试使用PDOorMYSQLI代替mysql

于 2013-02-08T00:23:57.523 回答
0

您的查询对 SQL 注入开放。我添加了一个简单的功能,它总是很适合我。

function inject($value)
{
    // Stripslashes
    if (get_magic_quotes_gpc()) {
        $value = stripslashes($value);
    }
    // Quote if not integer
    if (!is_numeric($value)) {
        $value = "'" . mysql_real_escape_string($value) . "'";
    }
    return $value;
}

$query = "UPDATE accounts SET moonscore = ".inject($moonscore).", sunscore = ".inject($sunscore)." WHERE name =".inject($name);
于 2013-02-08T00:26:37.277 回答