Php 如何防止撇号被删除

Php 如何防止撇号被删除,php,mysql,mysql-real-escape-string,apostrophe,Php,Mysql,Mysql Real Escape String,Apostrophe,我有一个要求用户名的注册系统。有些人的姓氏中有一个撇号,它阻止数据写入MySQL数据库表(例如O'Hare) 我使用的是mysql\u real\u escape\u字符串,它从字符串中删除撇号。这很好,除非我需要对Web服务使用带撇号的值,否则Web服务将返回false 我在想,在使用mysql\u real\u escape\u字符串之前,我可以对Web服务进行名称检查,但这是否会造成安全缺陷?或者soapweb服务已经自己检查干净的输入了吗 还是有更好的方法传递变量,PHP保留撇号,但仍然

我有一个要求用户名的注册系统。有些人的姓氏中有一个撇号,它阻止数据写入MySQL数据库表(例如O'Hare)

我使用的是mysql\u real\u escape\u字符串,它从字符串中删除撇号。这很好,除非我需要对Web服务使用带撇号的值,否则Web服务将返回false

我在想,在使用mysql\u real\u escape\u字符串之前,我可以对Web服务进行名称检查,但这是否会造成安全缺陷?或者soapweb服务已经自己检查干净的输入了吗


还是有更好的方法传递变量,PHP保留撇号,但仍然保持安全,MySQL可以接受它?

您应该向我们展示一些代码,因为
MySQL\u real\u escape\u string
不会删除撇号,而只会对其进行转义。
转义意味着
O'Hare
将变为
O'Hare
,以便它可以作为字符串插入:
'O'Hare'
。从数据库检索时,您的值仍应为原始值
O'Hare

因此,如果撇号“丢失”,则在程序逻辑的其他地方可能存在错误


另一个选项是从使用MySQL库切换到使用MySQLi或PDO库来访问数据库。后两个国家支持编写的声明。准备好的语句通常被认为是查询数据库的最佳实践。

mysql\u real\u escape\u string()
不会删除撇号


您的问题可能在输出端,或者其他一些函数干扰了输入

在使用
mysql\u real\u escape\u string之前,需要打开数据库连接,否则它会出现故障。

它是。。。移除它?说真的吗?+1用于向PDO指示人员。说真的,旧的mysql库是90年代的