php - SQL 引用在一台服务器上产生 sql 语法错误,而不是另一台服务器

标签 php mysql quotes

奇怪的是,我将站点和数据库从一台 LAMP 服务器移到了另一台。在旧服务器上,用户可以毫无问题地将文本输入到包含引号的文本区域。我假设它在 php 或 sql 配置文件中,问题是,我在旧站点上的主机不会提供这些文件,所以我不确定要更改什么。知道为什么它适用于一个而不适用于另一个吗?

以下是以防万一的代码行:

mysql_query("UPDATE Stu SET Stu_IDD = '$snumd', First = '$first', Last = '$last', 
             MPhone = '$mphone', HPhone = '$hphone',  EContact = '$econtact', 
             EPhone = '$ephone', GMail = '$gmail', PMail = '$pmail', 
             Address = '$address', Apt = '$apt', Pcode = '$pcode', 
             City = '$city', DOB = '$dob', Gender = '$gender', 
             Deaf = '$deaf', Notes = '$notes' 
             WHERE Stu_ID = '$snum'") 
      or die(mysql_error());

非常感谢您的宝贵时间和答复!

最佳答案

On the old server users can enter text into text areas that include quotes with no problem.

看起来你的引号在旧服务器上自动转义了,可能是因为旧 php 版本中名为 Magic Quotes 的设置。 .

此“功能”已被弃用和删除,不应依赖它来为数据库转义数据。

您应该切换到 PDO 或 mysqli 并使用带有绑定(bind)参数的准备好的语句。

关于php - SQL 引用在一台服务器上产生 sql 语法错误,而不是另一台服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26663348/

相关文章:

php - 使用许多一对多关系(ORM)减少MySQL中的查询

php - 从数据库中的两个表获取信息,其中 id 与数组匹配?

php - 生成按 user_id 分组的订单表,该表汇总了产品数量

php - 小型/高效的 PHP 数据库选项

php - 如果用户的浏览器禁用了 javascript,则使用 javascript 的网页无法工作...那么有什么方法可以在没有 javascript 的情况下运行像 onclick 这样的命令?

php - jQuery 新手 - 为什么这个简单的函数不起作用?

mysql - 如何优化 MySQL View

mysql - 替换 MySQL 5 表中的反斜杠似乎有效 : but how do I double check?

r - grouped_df_impl 中的错误(数据,取消命名(vars),删除): Column is unknown

csv - 使用 FileHelpers 处理报价