Php PDO#1054未知列';n';在';where子句
我有一个类,它有一个函数,可以从数据库中提取任何数据,不管标识列是什么,基本上如下所示Php PDO#1054未知列';n';在';where子句,php,mysql,pdo,where-clause,Php,Mysql,Pdo,Where Clause,我有一个类,它有一个函数,可以从数据库中提取任何数据,不管标识列是什么,基本上如下所示 use Database\DB; class General extends DB { private $fooBar; public function getData($column, $table, $value) { $column = (array) $column; $column = implode(', ', $column);
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]
将是第一个列名的第一个字符,而不是第一个列名。去掉该行
$column = implode(', ', $column);
它用一个字符串替换数组,该字符串包含所有以逗号分隔的列名。然后,$column[0]
将是第一个列名的第一个字符,而不是第一个列名。去掉该行
$column = implode(', ', $column);
它用一个字符串替换数组,该字符串包含所有以逗号分隔的列名。然后,$column[0]
将是第一个列名的第一个字符,而不是第一个列名。去掉该行
$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=(数组)$column
到$columns=(数组)$column代码>
及
到
把你的全部疑问写在这里。。比这容易多了
编辑:
请尝试以下代码:
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=(数组)$column
到$columns=(数组)$column代码>
及
到
把你的全部疑问写在这里。。比这容易多了
编辑:
请尝试以下代码:
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=(数组)$column
到$columns=(数组)$column代码>
及
到
把你的全部疑问写在这里。。比这容易多了
编辑:
请尝试以下代码:
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=(数组)$column
到$columns=(数组)$column代码>
及
到
这应该可以解决问题(请参见@Barmar answer):
(注意内爆语句中的差异)
这应该可以解决问题(请参见@Barmar answer):
(注意内爆语句中的差异)
这应该可以解决问题(请参见@Barmar answer):
(注意内爆语句中的差异)
这应该可以解决问题(请参见@Barmar answer):
(注意内爆语句中的差异)
@JordiPrevost var转储查询本身?它给出了什么?没有返回查询,哈哈。它现在给了我一个空的而不是空的。我的意思是完整的原始查询是什么样子的?因为可能它返回NULL或空,因为没有要返回的行(匹配)?@JordiPrevost var转储查询本身?它给出了什么?没有返回查询,哈哈。它现在给了我一个空的而不是空的。我的意思是完整的原始查询是什么样子的?因为可能它返回NULL或空,因为没有要返回的行(匹配)?@JordiPrevost var转储查询本身?它给出了什么?没有返回查询,哈哈。它现在给了我一个空的而不是空的。我的意思是完整的原始查询是什么样子的?因为可能它返回NULL或空,因为没有要返回的行(匹配)?@JordiPrevost var转储查询本身?它给出了什么?没有返回查询,哈哈。它现在给了我一个空的而不是空的。我的意思是完整的原始查询是什么样子的?因为它可能返回NULL或空,因为没有要返回的行(匹配的行)?