对于json_encoded对象,我需要escape_string吗?

时间:2012-01-07 16:20:27

标签: php mysql json

我想在我的数据库中存储一个json对象:

$string='{"test": [{"name":"dave","user":"dan"}]}';
  $encoded=json_encode($string);

  $connection=Database::getInstance();
  $escaped=mysqli_real_escape_string($connection->connection,$encoded);
  $q="UPDATE table SET column=?";

  $s=mysqli_prepare($conn->connection,$query);
  mysqli_stmt_bind_param($s,'s',$escaped);
  mysqli_stmt_execute($s);

当我json_encode和mysqli_real_escape_string时,它在我的数据库中显示如下:

  \"{\\\"test\\\": [{\\\"name\\\":\\\"dave\\\",\\\"user\\\":\\\"dan\\\"}]}\"

显然,我不想邀请黑客,但它似乎是一个疯狂的斜线...我需要做两个json_encode或mysqli_real_escape_string还是我可以只使用json_encode?

1 个答案:

答案 0 :(得分:3)

您已经在使用参数化查询 - 在这种情况下不再需要mysqli_real_escape_string()。 (事实上​​,这是错误的,因为它打破了数据。)