繁体   English   中英

如何处理 PHP 中的 SQL 查询中的单引号?

[英]How do I handle single quotes inside a SQL query in PHP?

我正在使用特定查询来插入记录。 进展顺利。 我什至使用 select 查询来获取记录。 但我的问题是,如果记录包含单引号'',那么它会给我这个错误:

> NOTE:You have an error in your SQL syntax; 
>     check the manual that corresponds to your MySQL server 
>     version for the right syntax to use near 'B''' at line 1

SELECT查询是:

$result= mysql_query("SELECT s.name, 
                             s.sid as sid, 
                             s.category, 
                             p.name as pname 
                         FROM poet p 
                         INNER JOIN song s 
                            ON p.pid = s.pid 
                         WHERE s.name= '$sid'") or die(mysql_error());

我应该怎么做才能跳过引号问题。 当我想在我的记录中插入引号时。

您的问题比这更糟糕 - 如果有人输入值'; DROP TABLE poet; -- '; DROP TABLE poet; -- '; DROP TABLE poet; -- 您需要使用mysql_real_escape_string()来转义该值,或使用参数化查询(例如,使用 PDO)。

这是 2011 年,因为大声哭泣。 为什么 SQL 注入仍然是一个普遍存在的问题?

你必须逃避数据

$sid = mysql_real_escape_string($sid);

使用http://www.php.net/manual/en/function.mysql-real-escape-string.php function 在您的字符串上使用其他特殊符号和其他特殊符号来引用“'” -passwords) 具有不同的插入和选择权限。 在这种情况下 mysql_real_escape_string 会很好用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM