使用php在sql中更新命令

时间:2013-01-31 13:20:23

标签: php sql

需要帮助,过去几天一直在研究如何更正此脚本?

  <?php
include("../includes/db.php");

$serial = intval($_GET['code']);

$result = "UPDATE table_name SET name = ('".$_POST["name"]."') WHERE serial = '".mysql_real_escape_string($serial)."'";
$row = mysql_query($result);

if($row)
{
    echo "Save completed.";
}
else
{
    echo "Error [".$row."]";
}
?> 

非常感谢您的专业知识。

由于

4 个答案:

答案 0 :(得分:1)

添加htmlspecialchars()以获得更高的安全性,并将其放在如下变量中:

$name = htmlspecialchars(mysql_real_escape_string($_POST['name']), ENT_QUOTES);
$serial = htmlspecialchars(mysql_real_escape_string($serial), ENT_QUOTES);
$result = "UPDATE table_name SET name = '$name' WHERE serial = '$serial'";

哦,你不需要打开和关闭$ result,因为它使用双引号,只需将变量放在单引号之间。

我认为你应该考虑使用PDO或MySQLi,它们更安全,更快,这里有一些例子:

PDO:

    $pdo->prepare('SELECT * FROM users WHERE username = :username');
    $pdo->execute(array(':username' => $_GET['username']));

MySQLi:

    $query = $mysqli->prepare('SELECT * FROM users WHERE username = s');
    $query->bind_param('s', $_GET['username']);

答案 1 :(得分:0)

这是正确的方法,假设你没有使用任何框架。

看看: http://www.w3schools.com/php/php_mysql_update.asp

如果您不在其他地方控制数据库连接,则应在那里关闭它。

答案 2 :(得分:0)

丢掉括号

$result = "UPDATE table_name SET name = '".$_POST["name"]."' WHERE serial = '".mysql_real_escape_string($serial)."'";

答案 3 :(得分:0)

从('“。$ _ POST [”name“]中移除()。”')也在$ row的位置使用mysql_error()

echo“错误[”。$ row。“]”;