<?php include_once 'DB_Connect.php'; function getCategories() { $db = new DB_Connect(); // array for json response $response = array(); $response["Student"] = array(); // Mysql select query $result = mysql_query("SELECT * FROM Student"); while ($row = mysql_fetch_array($result)) { // temporary array to create single category $tmp = array(); $tmp["id"] = $row["id"]; $tmp["name"] = $row["name"]; $tmp["number"] = $row["number"]; $tmp["address"] = $row["address"]; // push category to final json array array_push($response["Student"], $tmp); } // keeping response header to json header('Content-Type: application/json'); // echoing json result echo json_encode($response); } getCategories(); ?>
У меня есть этот API для моего приложения для Android, но у меня есть проблема с этой ошибкой ниже. Есть идея?
<br /> <b>Warning</b>: mysql_fetch_array() expects parameter 1 to be resource, boolean given in <b>...\get_Student.php</b> on line <b>13</b><br /> {"Student":[]}
mysql_*
официально устарел. Используйте PDO
или mysqli
. Так вы делаете это с помощью библиотеки MySQLi:
<?php // Connect To Db $mysqli = new mysqli("localhost", "my_user", "my_password", "my_database"); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } // Query Function function getCategories() { // Init global $mysqli; $response = array('Student' => array()); // Query Db $query = "SELECT * FROM Student"; if ($result = $mysqli->query($query)) { while ($row = $result->fetch_assoc()) { $response['Student'][] = array( 'id' => $row['id'], 'name' => $row['name'], 'number' => $row['number'], 'address' => $row['address'], ); } $result->free(); // free up memory } // Finished header('Content-Type: application/json'); exit(json_encode(response)); } // Test getCategories(); // Close Db Connect $mysqli->close();
У вас может быть этот код:
// Connect To Db $mysqli = new mysqli("localhost", "my_user", "my_password", "my_database"); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); }
В файле с именем db_connect.php и вы можете включить его в скрипт, для которого требуется соединение db. Поскольку переменная $mysqli
инициируется вне function() { ... }
scope; вам нужно использовать global $mysqli;
чтобы получить доступ к нему. Это применяется независимо от того, что код подключения находится в одном файле или включен из внешнего файла. Счастливое кодирование.