0

我想使用 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
4

2 回答 2

0

我在你的另一个问题上发布了一些类似的信息。我强烈建议对您的数据库内容使用对象关系映射。它让我的生活变得超级轻松。听起来您已经了解 SQL,因此您应该能够轻而易举地掌握它。文档是可靠的。查看此代码,它可以满足您的需求。成语/巴黎

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 路由器就位,您只需使用 Paris 的简单功能,您就不必担心容易出错的长查询字符串。:-)

于 2012-01-31T09:33:16.267 回答
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);
 }
});

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

于 2011-10-21T15:19:24.833 回答