使用php在sql中更新命令

使用php在sql中更新命令,php,sql,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(

需要帮助,在过去的几天里一直在做这件事,有没有建议如何更正这个脚本

  <?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."]";
}
?> 

假设您不使用任何框架,这是正确的方法

看一看:

如果你不能控制其他地方的db连接,你应该在那里关闭它。

去掉括号

$result = "UPDATE table_name SET name = '".$_POST["name"]."' WHERE serial = '".mysql_real_escape_string($serial)."'";
添加
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或MySQL,它们更安全和更快,这里有一些例子:

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']);
从(““.”$\u POST[“name”]。“”)中删除()并在中使用mysql_error()代替$row


回显“错误[”$row.“]”

定义“更正此脚本”同样,您是否考虑过将其发布到?那么…为什么序列号转义,而名称不转义?我现在看到了SQL注入的一个很好的滋生地。此外,mysql_*语句被认为是不推荐使用的,应该迁移到mysqli_*或PDO()。我不建议@Guerra:Check Nice@FahimParkar I aways从w3c获取一些小信息,但我是后端编程人员,不会在w3c上查找错误和错误实践,也不会使用从那里获取的完整代码块。我只想记住代码中的一些东西。在这种情况下,我认为信息是正确的。但无论如何,ty将更加关注w3c的内容。