我有一个用 PHP 处理的表单。它包含有关客户作业的备注字段。问题是,如果注释中有一个 ' - 例如它的 O'Reilly 等,它会转义数据库中的字符串,所以我有所有的注释,直到它遇到 ' 那就结束了的笔记。
我知道有 mysqli_ 和 PDO 之类的东西,但现在是繁忙的季节,我可以在 1 月份进行全面更新/大修之前快速修复这个问题。
知道为什么它不起作用吗?包括代码。我把 mysql_real_escape_string() 放在哪里都没关系,它在任何地方都不起作用。
仅供参考:表格列是文本。还有其他几个领域,因此是 foreach
// SELECTS AND CONNECTS TO SERVER/DB
include_once('config/db.inc.php');
// CONVERT ALL $_POST['name'] to $name and clean/prep for mysql insertion
foreach($_POST as $key => $value ) {
$$key = mysql_real_escape_string($value);
}
// UPDATE CLIENT JOB NOTES
$query = "UPDATE client_list SET bookingNotes='$bookingNotes' WHERE id='$CID'";
mysql_query($query, $conn) or die(mysql_error());
TIA
编辑以下回复:
$bookingNotes 和 $CID 由表单变量 $_POST['bookingNotes'] 和 $_POST['CID'] 定义,其中 foreach 基本上删除了“_POST”部分。(这就是整个 $$key = $value 部分)
如前所述,我很欣赏 mysqli_ 和 PDO,但目前无法在系统范围内学习、更新和实施这些。这在本地运行,我当前的 PHP 5.4.1 版本支持该功能。我理解 PDO 更好,但现在这不是一个选择,所以请不要用“正确地做”或“学习如何编码”来贬低我。这不是手头的问题。
我知道发生了什么以及在哪里以及为什么 - mysql 将 ' 视为字符串的结尾。但是我不知道为什么会发生这种情况,因为我认为该函数应该转义 ' 并允许它进入数据库。
推测,这就是发生的事情。
“今天很灰,正在下雨”作为 $bookingNotes 输入到表格中。然后脚本将其输入到数据库的 TEXT 列中。但是出现在数据库中的是;
“今天很灰暗,它”
TIA 和感谢您迄今为止的回复。