php - SQLSTATE[42S22] : Column not found in REST Api

标签 php mysql sql rest

我可以显示所有结果,但是当我调整代码以尝试更具体地查询时,它返回 42s22 {“error”:{“text”:SQLSTATE[42S22]:未找到列:1054“where 子句”中的未知列“Plant”}即使存在包含 plant 值的列,也会显示此错误。

<?php

require '.././libs/Slim/Slim.php';
require '.././include/db.php';

\Slim\Slim::registerAutoloader();

$app = new \Slim\Slim();


$app->get('/location/all', function(){
$sql = "SELECT * FROM plant_location";


try{

    $db = new db();

    $db = $db->connect();

    $stmt = $db->query($sql);
    $customers = $stmt->fetchAll(PDO::FETCH_OBJ);
    $db = null;
    echo json_encode($customers);
} catch(PDOException $e){
    echo '{"error": {"text": '.$e->getMessage().'}';
}
});

$app->get('/location/plant/:plant', function($plant){

$sql = "SELECT * FROM plant_location WHERE plant=$plant";



try{

    $db = new db();
    $db = $db->connect();

    $stmt = $db->query($sql);
    $customers = $stmt->fetchAll(PDO::FETCH_OBJ);
    $db = null;
    echo json_encode($customers);
} catch(PDOException $e){
    echo '{"error": {"text": '.$e->getMessage().'}';
}

});
$app->run();
?>

SQL: 我试图使用植物过滤结果

CREATE TABLE `plant_location` (
  `id` int(11) NOT NULL,
  `plant` varchar(255) NOT NULL,
  `latitude` varchar(255) NOT NULL,
  `longitude` varchar(255) NOT NULL,
  `image` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


INSERT INTO `plant_location` (`id`, `plant`, `latitude`, `longitude`, `image`) VALUES
(1, 'Plant', '14.396033', '121.0452128', '//'),
(2, 'Plant B', '14.3967839', '121.0444142', ''),
(3, 'Bawang', '14.3975636', '121.0447081', ''),
(4, 'Bawang', '14.395036', '121.044177', '');

例如,如果我使用/location/plant/Bawang 我想检索 id 为 3 和 4 的条目

(3, '霸王', '14.3975636', '121.0447081', ''), (4, '霸王', '14.395036', '121.044177', '');

最佳答案

感谢 Ed Cottrell,我找到了答案。我将其发布在这里以防万一有人也需要答案。我想,分享就是关怀

<?php

require '.././libs/Slim/Slim.php';
require '.././include/db.php';

\Slim\Slim::registerAutoloader();

$app = new \Slim\Slim();


$app->get('/location/all', function(){
    $sql = "SELECT * FROM plant_location";


    try{

    // Get DB Object
        $db = new db();
    // Connect
        $db = $db->connect();

        $stmt = $db->query($sql);
        $customers = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo json_encode($customers);
    } catch(PDOException $e){
        echo '{"error": {"text": '.$e->getMessage().'}';
    }
});

    $app->get('/location/plant/:plant', function($plant){


  //  echo 'here';
    try{
    //    echo 'here';
        // Get DB Object
        $db = new db();

        $db = $db->connect();
        $stmt = $db->prepare('SELECT * FROM plant_location WHERE plant = :plant');
        $stmt->bindValue(':plant', $plant);
        $stmt->execute();
        $customers = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo json_encode($customers);
    } catch(PDOException $e){
        echo '{"error": {"text": '.$e->getMessage().'}';
    }

});
$app->run();
?>

数据库

<?php
    class db{
        // Properties
        private $dbhost = '//myhost';
        private $dbuser = '//myuser';
        private $dbpass = '//mypass';
        private $dbname = '//myname';

        // Connect
        public function connect(){
            $mysql_connect_str = "mysql:host=$this->dbhost;dbname=$this->dbname";
            $dbConnection = new PDO($mysql_connect_str, $this->dbuser, $this->dbpass);
            $dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            return $dbConnection;
        }
    }
    ?>

关于php - SQLSTATE[42S22] : Column not found in REST Api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51382110/

相关文章:

php - PHP 中的内联 elseif

MySQL:在 SELECT 语句中使用 IF 条件比较日期

mysql如何按时间顺序对记录进行分组

sql - 如何可靠地列出和删除 Oracle 中的所有空间索引?

php - 将 PHP 变量打印到 JavaScript 变量中

PHP Regex - 两台服务器上的不同解析

php - 如果数据库中不存在则显示默认图像无法按预期工作

mysql - 存储过程在 MySql 中无法正常工作?

python - Python 参数化 MySQL 查询中的转义反斜杠

php - 更新 SQL 表的行