需要帮助,过去几天一直在研究如何更正此脚本?
<?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."]";
}
?>
非常感谢您的专业知识。
由于
答案 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。“]”;