如何使用REST API从表中获取数据

时间:2011-10-21 07:49:52

标签: php rest slim

我想使用Slim框架在php中创建rest API。

我创建了一个函数来获取我的表的所有条目: -

<?php

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

  // Include the Slim library
  require 'Slim/Slim.php';

  // Instantiate the Slim class
  $app = new Slim();

  // Create a GET-based route
  $app->get('/', function () {
    echo "Pericent is working on Campus Concierge...";
  });

$app->get('/schools', function () 
{ 

    $sql = "SELECT * from school";

    $result = mysql_query($sql) or die ("Query error: " . mysql_error());

    $records = array();
    if (mysql_num_rows($result)==0)
     {

        echo '('.'['.json_encode(array('id' => 0)).']'.')';
     }
     else
     {
       while($row = mysql_fetch_assoc($result)) 
       {

           $records[] = $row;
       }

           echo json_encode($records);
     }

});
?>

现在我想做一个返回id 5 的学校的细节的功能。所以请建议我如何制作一个功能,以便我可以访问学校拘留哪个id在这个URL中给出

192.168.1.126/schools/:5

2 个答案:

答案 0 :(得分:0)

我通过使用一些教程解决了我的问题。

这是我的解决方案:

$app->get('/schools/:id', function ($id) {

// Retrieve game associated with an ID of $id  
$sql = "SELECT * from school where schoolId='$id'";

$result = mysql_query($sql) or die ("Query error: " . mysql_error());

$records = array();
if (mysql_num_rows($result)==0)
 {

  echo '('.'['.json_encode(array('id' => 0)).']'.')';
 }
 else
 {
   while($row = mysql_fetch_assoc($result)) 
   {

     $records[] = $row;
   }

   echo json_encode($records);
 }
});

我希望这会有助于未来的读者。

答案 1 :(得分:0)

我在您的其他question上发布了一些类似的信息。我强烈建议您使用对象关系映射来处理数据库内容。这让我的生活变得非常轻松。听起来你已经知道SQL了,所以你应该能够轻而易举地把它拿起来。文档很扎实。看看这个符合你想要的代码。 Idiorm/Paris

class School extends Model {}

$app->get('/school/:id', function($id) use ($app) {

    $school = Model::factory('School')->find_one($id);  // Paris: row with $id
    $schoolAry = $school->as_array('id', 'name', 'zip', 'numStudents');

    $response = $app->response();    // Slim Response object at work
    $response['Content-Type'] = 'application/json';

    echo json_encode($schoolAry);    // Output
});

一旦你有了GET,POST,PUT,DELETE路由器,你就可以使用巴黎的简单功能了,你不必担心长期容易出错的查询字符串。 : - )