繁体   English   中英

PHP MySQL使用更新真正逃脱

[英]PHP mysql real escape using update

我正在使用Real Escape String来停止字符,例如引发SQL错误。 这是我的代码的一部分,应该从表单更新。 我需要帮助弄清楚如何使用update做转义字符串。

$Comments = mysql_real_escape_string($_POST['Comments']);
$id = mysql_real_escape_string($_POST['id']);
$sql="UPDATE Worklog SET Comments = '$Comments' WHERE id = '$id'";
mysql_query($sql);

    <form action="comments.php?id=<?php echo $stuff['id'];?>" method="post">

    <br />
    Comments: <br />
    <textarea name="Comments"  method="post" cols="20" rows="5" wrap="hard"><?php echo $stuff['Comments']; ?></textarea> <br />

    <br />
    <input type="submit" name="makeitgos" />
    <br />
    <br />
    </form>

    </body>
    </html>

`

我同意Liquorvicar的观点,即PDO似乎使事情变得容易得多。

我只是在学习PHP,但是我相信您可以使用定界符在双引号字符串中转义'字符。 另外,当我在自己的MySQL数据库上尝试此操作时,除非对变量使用双引号,否则该查询将无法工作。 查看工作代码:

$sql = "UPDATE Worklog SET Comments = \"$Comments\" WHERE id = \"$id\"";

您的代码看起来还不错,如果仍在使用mysql库,则使用mysql_real_escape_string很有用。 但是请注意,我建议在将is_numeric($id)应用到SQL语句之前检查$id是否为数字(带有is_numeric($id) )。

此外,您可以使用mysqli和PDO查看准备好的语句 使用准备好的语句的优势在于,MySQL注入的可能性较小(请注意,SQL注入是一个安全漏洞,而不仅仅是不便之处),并且SQL查询通常会更快一些(尤其是在重用查询时)。

说到转义,您应该真正逃避<?php echo $_POST[x]; ?> <?php echo $_POST[x]; ?> ,因为例如,如果将"><script>alert('hai');</script>作为ID或注释输入,它们仍可能会引起一些问题,因此应使用htmlspecialchars转义。

编辑:答案并不完全适合这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM