【发布时间】:2015-05-29 19:05:07
【问题描述】:
所以我发现这个表单我刚刚崩溃,甚至没有提交内容,直到有人在此文本区域键入撇号时第一个撇号。如何转义内容以便将其放入我的 MySQL 表中?谢谢!
<form action=\"./functions/notes.php\" method='post'>
<input type='hidden' id='ID' name='ID' value='{$row['ID']}' />
<textarea placeholder=\"Add more notes here...\" name=\"notes\"></textarea><br />
<input type='submit' name='formNotes' id='formNotes' value='Add to Notes' />
</form>
然后在notes.php文件中
$notesID = $_POST['ID'];
$note = $_POST['notes'];
$date= date('Y-m-d');
$result = mysql_query("UPDATE Project_Submissions SET Notes=CONCAT(Notes,'<br />".$date." ".$note."') WHERE ID ='".$notesID."'");
【问题讨论】:
-
请stop using
mysql_*functions。它们不再被维护并且是officially deprecated。改为了解 prepared statements,并考虑使用 PDO,it's not as hard as you think。如果您使用准备好的语句,则不必担心转义 anything。 -
@JayBlanchard 我使用 mysqli 而不是 mysql。你认为这有问题吗?我不知道可以与 mysqli_fetch_assoc 相媲美的函数来返回我需要的一切。我读到 mysqli 是改进版。
-
@JoseManuelAbarcaRodríguez 实际上,urlencode 是错误的函数/方法。正确的答案是绑定您的查询,好的/坏的答案是逃避您的查询。使用 urlencode 需要您在提取值时进行 urldecode,否则您最终会在文本中得到一堆
%20值(和其他 url 实体)。至少,将其传递给 htmlentities。 -
@Zapp mysqli 与 PDO 相比很好。选择哪个只是个人喜好。关键是绑定您的查询,而不是使用连接和转义来构建查询。哦,对了,mysqli是改进的mysql。 Mysql 将在以后的版本中被移除。
标签: php html forms escaping textarea