我有一个使用PHP处理的表单。它包含关于客户端作业的Notes的字段。 问题是,如果在笔记中有一个“内部”,例如O'Reilly,那么它就会跳出数据库中的字符串,所以我将所有注释都记录下来,直到它遇到'那么这就是笔记结尾。mysql_real_escape_string不能使用'
我意识到有些事情像mysqli_和PDO,但现在是繁忙的季节,我可以在1月份完成更新/彻底检查之前快速解决此问题。
任何想法为什么它不工作?包括代码。无论我把mysql_real_escape_string()放在哪里,它都无法在任何地方工作。
仅供参考:表栏是TEXT。而且还有其他几个领域,因此在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正在处理字符串的as和end。但是我不知道为什么会发生这种情况,因为我认为这个函数应该逃避并允许它进入数据库。
推测,这是发生了什么事。
“今天非常灰暗,下雨”以$ bookingNotes的形式输入。然后该脚本将其输入到数据库的TEXT列中。但是数据库中出现的是什么;
“今天是非常灰色的,它”
TIA和感谢迄今响应。
$ bookingNotes和$ CID是在哪里定义的,它们似乎没有从循环数组值 –
获取哪些php版本使用的值?原始的mysql扩展从php 5.5.x版本中折旧。 – Nishant
也许这是错的? - >'$$ key' – aldanux