我在我的postgres数据库中存储用户喜欢的facebook页面,其中一个是sininead O'Connor的页面。似乎当它到达撇号时,它终止查询,因为撇号匹配,因此导致错误:
$json_likes=json_encode($likes);
echo $json_likes;
$query = "UPDATE public.account_recover_users SET user_likes='$json_likes' WHERE user_mail='$email'";
$result = pg_query($query);
if(!$result)
exit('{ "status": false }');
else exit('{ "status": true }');
现在我得到的是:
Warning: pg_query() [<a href='function.pg-query'>function.pg-query</a>]: Query failed: ERROR: syntax error at or near "Connor" LINE 1: ...l","page_id":"243440865683470"},{"name":"Sinead O'Connor","p...
你知道我该怎么处理吗?我的应用程序的用户可能在他们喜欢的页面中有各种各样的字符。
很高兴您没有尝试为Bobby Tables存储页面。你的应用很容易受到SQL注入的攻击——为了你自己好,请使用转义撇号。
TL;DR:您要附加的文本中的撇号与应用程序中硬编码的撇号相匹配,这会导致SQL命令格式错误。因此出现了错误。
编辑:从注释中移到这里。下面是关于如何防止PHP中SQL注入的一个很好的指南
你在json字符串中有单引号,它打破了查询。至少使用addslashes($json_likes)
和addslashes($email)