2013-03-07 2 views
2

Я совершенно новой для Php и я пытаюсь отправить данные JSON из PHP в android.I иметь следующий код в PHP, чтобы прочитать значение из базы данных:отправить JSON данные из 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 сказать мне, что может быть возможной ошибки

+0

1. Вы используете 'mysql_ *' и 'mysqli_ *' (выберите один и выберите mysqli :)). 2. '$ json' не определен нигде (вы должны определить его выше с помощью' $ json = array(); '). 3. '$ bus' нигде не определен - вы имели в виду' $ details'? 4. Пожалуйста, ознакомьтесь с SQL Injection (http://en.wikipedia.org/wiki/SQL_injection). – Quasdunk

ответ

8

Try как это

$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

+1

Thanx a ton @Sam !!! – joy

+0

Добро пожаловать: D – Sam

1

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

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

Также другая ошибка:

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

, Может у, пожалуйста, скажите мне, что не так в вышеуказанных – joy

0

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

5

В дополнении к изменениям, предложенным Сэмом и pitchinnate, также добавить заголовок PHP, чтобы установить тип содержимого JSon

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

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

0

Неопределенная переменная: 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); 

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

Смежные вопросы