Я создал API, который кодирует данные из таблицы в массив, а затем в json.Почему json_encode не кодирует этот конкретный массив, а кодирует другие массивы с одинаковой структурой?
<?php
header('Content-type: application/json');
header("Access-Control-Allow-Origin: *");
...(connection to db)... :p
$query = "SELECT * FROM gdb.".$_GET['tb'];
$result = mysqli_query($conn,$query);
$posts =array();
while ($row = mysqli_fetch_assoc($result))
{
$posts[] = array('ONE'=>$row);
}
$all = array('ALL'=>$posts);
echo json_encode($all);//($posts);
mysqli_close($conn);
?>
, кажется, работает хорошо с другими таблицами, но с этой конкретной таблицей, json_encode не кажется т работы ..
Это массив из таблицы не будет кодировать JSON:
array(1) {
["ALL"]=>
array(61) {
[0]=>
array(1) {
["ONE"]=>
array(12) {
["id_product"]=>
string(1) "2"
["id_shop"]=>
string(1) "1"
["id_lang"]=>
string(1) "1"
["description"]=>
string(72) "<p> BUY 5-KILOS RICE FREE SARDINES 155G.SAVE 10.00</p>"
["description_short"]=>
string(0) ""
["link_rewrite"]=>
string(20) "5-kilos-rice"
["meta_description"]=>
string(0) ""
["meta_keywords"]=>
string(0) ""
["meta_title"]=>
string(0) ""
["name"]=>
string(40) "5-KILOS RICE FREE SARDINES"
["available_now"]=>
string(0) ""
["available_later"]=>
string(0) ""
}
}
[1]=>
array(1) {
["ONE"]=>
array(12) {
["id_product"]=>
string(1) "3"
["id_shop"]=>
string(1) "1"
["id_lang"]=>
string(1) "1"
["description"]=>
string(78) "<p>BUY 10-KILOS RICE FREE SARDINES RED 155G.SAVE 20.00</p>"
["description_short"]=>
string(0) ""
["link_rewrite"]=>
string(21) "10-kilos-rice"
["meta_description"]=>
string(0) ""
["meta_keywords"]=>
string(0) ""
["meta_title"]=>
string(0) ""
["name"]=>
string(41) "10-KILOS RICE FREE SARDINES"
["available_now"]=>
string(0) ""
["available_later"]=>
string(0) ""
}
}
}}
Массивы из тех, которые мой код мог кодировать в json, имеют одинаковую структуру. Просто различное количество полей и контента, поэтому я не знаю, почему с этим конкретным массивом это не сработает.
Я понял. Может быть, некоторые из описания строк (не включают в себя все в моей выборке) есть цитаты, doublequotes, слэш, и поэтому он не может кодировать JSon так я сделал это в то время цикла:
$posts[] = array('ONE'=>array_map("addslashes",$row));
вместо этого :
$posts[] = array('ONE'=>$row);
, но он по-прежнему не кодирует json. Я неправильно использовал array_map ?? или есть еще одна причина, почему он не будет кодировать json?
'json_encode' не похож на работу? Какой результат или исключение вы получаете? – Rvanlaak
Вам не нужно будет вызывать 'addslashes()' - 'json_encode()' будет обрабатывать это. Вы проверили 'json_last_error()' или 'json_last_error_msg()', чтобы увидеть, была ли ошибка json? – Jim
@Rvanlaak Я ожидаю что-то вроде {«ВСЕ»: [{«ОДИН»: {«id_product»: «2», «id_supplier»: «3», «id_manufacturer»: «0», «id_category_ ...» , который он сгенерировал, когда я использовал этот код в другой таблице: o –