簡體   English   中英

PDO#1054“ where”子句中的未知列“ n”

[英]PDO #1054 Unknown column 'n' in 'where clause

我有一個帶有函數的類,無論標識列可能是什么,該函數都會從數據庫中提取任何數據,基本上看起來像這樣

    use Database\DB;

class General extends DB
{   
    private $fooBar;

    public function getData($column, $table, $value) {
        $column = (array) $column;
        $column = implode(', ', $column);
        $test = $this->query("SELECT `$column` FROM `$table` WHERE $column[0] = :value", array("value" => $value));
    }

}

並執行如下:

return $this->general->getData(['name'], 'people', 'John Anderson');

但是,我收到一條錯誤消息,告訴我不存在具有值'n'的列輸入(無論該列名稱的值是什么,該輸入正好是列名稱的第一個字符)

完全錯誤;

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'n' in 'where clause'' in a\long\path\DB.class.php on line 50

PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'n' in 'where clause' in a\long\path\DB.class.php on line 50

在此先感謝,喬迪

擺脫界限

$column = implode(', ', $column);

它用包含用逗號分隔的所有列名稱的字符串替換數組。 然后$column[0]將是第一個列名的第一個字符,而不是第一個列名。

在此處輸入您的完整查詢。

編輯:

試試這個代碼:

use Database\DB;

class General extends DB
{   
    private $fooBar;

    public function getData($column, $table, $value) {
        $columns = (array) $column;
        $column = implode(', ', $columns);
        $test = $this->query("SELECT `$column` FROM `$table` WHERE $columns[0] = :value", array("value" => $value));
    }

}

我更改了以下內容: $column = (array) $column; $columns = (array) $column;

SELECT `$column` FROM `$table` WHERE $column[0] = :value", array("value" => $value)

SELECT `$column` FROM `$table` WHERE $columns[0] = :value", array("value" => $value)

這應該可以解決(也請參見@Barmar答案):

(還要注意內爆聲明中的差異)。

use Database\DB;

class General extends DB
{   
    private $fooBar;

    public function getData($column, $table, $value) {
        $column = (array) $column;
        $whereCol = $column[0];
        $column = implode('`, `', $column);
        $test = $this->query("SELECT `$column` FROM `$table` WHERE $whereCol = :value", array("value" => $value));

        return $test;
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM