首页 文章

Slim PHP REST API无法在 生产环境 服务器中获取数据,适用于localhost

提问于
浏览
0

我有一个简单的Slim PHP REST api,它在我的本地服务器上工作得很好,但当我将它推送到共享主机服务器时,它不会获取数据 . 我的有限计划没有给我SSH访问数据库所以很难运行测试,但这是我到目前为止跟踪的...

这是一个测试api endpoints :

$app->get('/test', function() use($app) {
    $app->response->setStatus(200);
    if($db = getDB()){
      echo "connected<br>";
    } else{
      echo "not connected<br>";
    }
    $sql = "SELECT * FROM artists";
    $stmt = $db->prepare($sql);
    if($stmt){
      echo "statement true<br>";
    } else{
    echo "statement not true<br>";
    }
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_OBJ);
    if($stmt->fetch()){
      echo "executed";
    }else{
      echo "not executed";
    }
});

这给了我一个输出:'connected''语句为true''未执行' .

我能够成功地从phpMyAdmin仪表板运行查询 . 在网页中,其余的api工作正常并返回“找不到匹配”消息,暗示函数正在运行,但数据集为空 . 我不知道找哪个方向找到为什么没有记录被退回?

在完整的数据功能中:

$error = array('error' => 'No match found');

    // fetch data into array
    $i = 0;
    while($row = $stmt->fetch()) {
        $data[$i] = $row;
        $i++;
    }

    // return data
    if($data) {
        $app->response->setStatus(200);
        $app->response()->headers->set('Content-Type', 'application/json');
        echo json_encode($data, JSON_PRETTY_PRINT);
    } else {
        $app->response->setStatus(200);
        $app->response()->headers->set('Content-Type', 'application/json');
        echo json_encode($error);
    }

我是PHP的新手,所以任何关于如何解决问题,记录或以其他方式追踪问题的建议都将不胜感激 .

1 回答

  • 0

    啊......我找到了!问题不在于php,而在于sql . 显然,sql语句在我的本地机器(mac)上不区分大小写,但在Linux服务器上区分大小写 . 在DB中,表名是 Artists ,在上面的代码中我有 artists .

    所以纠正是:

    $sql = "SELECT * FROM artists";
    

    变为:

    $sql = "SELECT * FROM Artists";
    

相关问题