簡體   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