Intereting Posts

отправить данные json из php

Я совершенно новичок в Php, и я пытаюсь отправить json-данные с php на android.I есть следующий код в php для чтения значения из базы данных:

<?php $con=mysql_connect("localhost","root",""); if(! $con) { die('Connection Failed'.mysql_error()); } mysql_select_db("registration",$con); $name="Adam";//$_POST["name"]; $password="charles";//$_POST["password"]; $sql="SELECT * FROM users WHERE name='$name'and password='$password'"; $result=mysql_query($sql, $con); while($row = mysqli_fetch_array($result)) { $details= array( 'name' => $row['name'], 'password' => $row['password'], ); array_push($json, $bus); } $jsonstring = json_encode($json); echo $jsonstring; mysql_close(); ?> 

Я ожидаю, что результат будет примерно таким:

 [{"name":"Adam","age":"25","surname":"charles"}] 

Если я не ошибаюсь, данные JSON. Но это дает мне ошибку:

 mysqli_fetch_array() expects parameter 1 to be mysqli_result, resource given in... 

а также

 Undefined variable: json in... 

может кто-то pleease сказать мне, что может быть возможной ошибкой

Попробуйте это

 $result=mysql_query($sql, $con); $json = array(); while($row = mysql_fetch_array($result)) { $json[]= array( 'name' => $row['name'], 'password' => $row['password'] ); } $jsonstring = json_encode($json); echo $jsonstring; 

И mysql устарел, когда вы можете использовать mysqli или PDO

В дополнение к изменениям, предложенным sam и pitchinate, также рассмотрите возможность добавления заголовка php для установки типа контента на json

 header('Content-type: application/json'); 

То есть, если вы используете андроид, чтобы запросить удаленную информацию json

Вы используете mysql_query с mysqli_fetch_array . Вам нужно использовать mysql_fetch_array .

Однако функции mysql_ * больше не должны использоваться.

Еще одна ошибка:

 array_push($json, $bus); // i believe $bus should be replaced with $details 

Я думаю, вы должны проверить содержимое переменной $ result (var_dump ()); На самом деле, если результат не определен, ваша программа не войдет в цикл, и $ json не будет определен.

Неопределенная переменная: json вызван тем, что вы пытаетесь сделать array_push ($ json, $ bus), но $ json не существует.

вы должны сначала заявить об этом

 $json = Array(); 

Ошибка mysql, скорее всего, вызвана тем, что вы смешиваете модули mysql и mysqli.

Используйте только mysqli.

 $con=mysqli_connect("localhost","root",""); mysql_select_db("registration",$con); ... $result=mysql_query($sql, $con); 

Также, как правило, неплохо хранить пароли в текстовом виде. Рассмотрим хотя бы хэш-функцию.