Я совершенно новичок в 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);
Также, как правило, неплохо хранить пароли в текстовом виде. Рассмотрим хотя бы хэш-функцию.