我想在我的数据库中存储一个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?
答案 0 :(得分:3)
您已经在使用参数化查询 - 在这种情况下不再需要mysqli_real_escape_string()
。 (事实上,这是错误的,因为它打破了数据。)