Я пытаюсь выполнить итерацию через объект MySQL и использовать ajax-вызов на другой странице для добавления данных, но я не могу заставить php вернуть действительный JSON для обратного вызова.
Этот, очевидно, не работает …
<?php $db_host = "localhost"; $db_user = "blah"; $db_pass = "blah"; $db_name = "chat"; $mysqli = new MySQLi($db_host, $db_user, $db_pass, $db_name); $myQuery = "SELECT * FROM users"; $result = $mysqli->query($myQuery) or die($mysqli->error); $row = $result->fetch_assoc(); echo json_encode($row); ?>
Или этот …
<?php $db_host = "localhost"; $db_user = "blah"; $db_pass = "blah"; $db_name = "chat"; $mysqli = new MySQLi($db_host, $db_user, $db_pass, $db_name); $myQuery = "SELECT * FROM users"; $result = $mysqli->query($myQuery) or die($mysqli->error); while ( $row = $result->fetch_assoc() ){ echo json_encode($row) . ", "; } ?>
$data = array(); while ( $row = $result->fetch_assoc() ){ $data[] = json_encode($row); } echo json_encode( $data );
Это должно сделать это. Кроме того, вы можете использовать http://jsonlint.com/, чтобы узнать, какие проблемы возникают с выходом JSON.
Обновление: использование fetch_all()
может быть хорошей идеей
$data = $result->fetch_all( MYSQLI_ASSOC ); echo json_encode( $data );
Я использую это:
$json = array(); if(mysqli_num_rows($result)){ while($row=mysqli_fetch_assoc($result)){ $json[]=$row; } } mysqli_close($mysqli); echo json_encode($json); ?>
в$json = array(); if(mysqli_num_rows($result)){ while($row=mysqli_fetch_assoc($result)){ $json[]=$row; } } mysqli_close($mysqli); echo json_encode($json); ?>
и я получаю что-то вроде этого
[{"id": "2", "usuario": "zeldafranco", "password": "lol"}, {"id": "3", "usuario": "franco", "password": "franco "}, {" идентификатор ":" 4" , "Новичок": "peteko", "пароль": "sanpeteko"}, { "идентификатор": "5", "Новичок": "Prueba", "пароль": «prueba»}, {«id»: «6», «usuario»: «test», «password»: «test»}, {«id»: «7», «usuario»: «pibe», «password ":" hola "}, {" id ":" 8 "," usuario ":" que ase "," password ":" que ase "}, {" id ":" 9 "," usuario ":" trt "," пароль ":" trt "}, {" id ":" 10 "," usuario ":" tyt "," password ":" tyt "}]
$arrUsers = array(); $fetch = mysql_query("SELECT * FROM users"); while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) { $arrUsers['id'] = $row['name']; $arrUsers['col1'] = $row['col1']; $arrUsers['col2'] = $row['col2']; array_push($arrUsers,$row_array); } echo json_encode($arrUsers);