2

我将来自 facebook 的用户喜欢的页面存储在我的 postgres 数据库中,其中之一是 Sinead 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 &quot;Connor&quot; LINE 1: ...l&quot;,&quot;page_id&quot;:&quot;243440865683470&quot;},{&quot;name&quot;:&quot;Sinead O'Connor&quot;,&quot;p... 

知道我应该如何处理吗?我的应用程序的用户可能在他们喜欢的页面中有各种各样的字符。

4

2 回答 2

5

很高兴您没有尝试为Bobby Tables存储页面。您的应用程序容易受到SQL 注入的影响- 为了您自己的利益,请转义撇号。

TL;DR:您附加的文本中的撇号与您的应用程序中硬编码的撇号相匹配,导致 SQL 命令格式错误。因此错误。

编辑:从评论中移到这里。这是关于如何防止 PHP 中的 SQL 注入的一个很好的指南

于 2013-05-22T12:30:15.653 回答
0

您在 json 字符串中有单引号,它会中断查询。至少使用addslashes($json_likes)addslashes($email)

于 2013-05-22T12:30:57.403 回答