我有一个从SQL调用中得到的值数组但是当我尝试将它放入我的网页中的表时,我收到错误:
JSON.parse: bad escaped character at line 1 column 657 of the JSON data
我已经意识到在数据中,其中一行有数据:INNO BROWN THOMAS TV \' S
由于转义字符导致错误,大结果集作为数组返回,我需要在php中使用某种循环来删除这些斜杠并停止错误。做这个的最好方式是什么?我查看了addslashes
和stripslashes
的PHP手册,我尝试循环数组以删除斜杠,但没有任何效果。
感谢正确指导任何帮助或积分。
$prodSQL = new prodEnqSQL;
$results = $prodSQL->getProdData($prodName, $prodType, $prodCode);
function stripslashes_array($results){
global $results;
if(is_array($results)){
foreach ($results as $key=>$value){
$value[$key] = stripslashes_array($value);
}
}else{
return stripslashes($results);
}
}
答案 0 :(得分:1)
如果是sql server 2016,你可以在查询时使用sql server的STRING_ESCAPE,如下所示:
select string_escape(yourcolumn, 'json') from yourtable
如果< SQL Server 2016
select replace(yourcolumn,'\','\\') from yourtable
答案 1 :(得分:0)
希望这对你有用
foreach ($your_array as $key=>$value) {
$your_array[$key] = stripslashes($value);
}
或许多级别数组使用此:
function stripslashes_deep($value)
{
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);
return $value;
}
$array = array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar"));
$array = stripslashes_deep($array);
print_r($array);