【问题标题】:Why does this sql query not work in pdo?为什么这个 sql 查询在 pdo 中不起作用?
【发布时间】:2017-07-07 10:13:27
【问题描述】:

我正在尝试使用 PDO 从我的数据库中检索信息。

我使用的代码是

$input = $_GET['input'];

$inputvalue = $_GET['inputvalue'];

$db = DB::get_instance();
$query = $db->prepare('SELECT * FROM hwidex7 WHERE :input=:inputvalue');
$query->bindParam(':inputvalue', $inputvalue);
$query->bindParam(':input', $input);
$query->execute();

【问题讨论】:

  • 我的语法真的很抱歉,希望懂我的人可以编辑我的问题,这样更容易理解
  • 为什么要在 HWID 上使用引号?
  • 有人需要阅读一些基础知识...dev.mysql.com/doc/refman/5.7/en/identifiers.html
  • 我已经编辑了这个问题,希望它现在更有意义
  • 你不能像你所做的那样将列名绑定到一个值

标签: php mysql sql pdo


【解决方案1】:

您不能将表或列绑定为 PDO 中的参数

您可以将查询构建为

$query = $db->prepare("SELECT * FROM hwidex7 WHERE `$input` =:inputvalue");
$query->bindParam(':inputvalue', $inputvalue);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
print_r($result);

【讨论】:

  • 只需要非常小心那个 $input 变量
  • 致命错误:未捕获异常 'PDOException' 并带有消息 'SQLSTATE[42S22]:找不到列:1054 'where 子句'中的未知列 '$input'
  • $input 是否包含您的列名??
  • 是的,我在其中放了一个列名
  • $input 的值是多少??
【解决方案2】:

两种方式都错了。

SELECT * FROM hwidex7 WHERE `HWID`='3087793810'

试试上面的查询。

你会得到同样的想法。

【讨论】:

  • 对不起,这不是我的意思,我已经添加了我的代码,所以你可能明白我的意思。
猜你喜欢
  • 1970-01-01
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 2023-02-17
相关资源
最近更新 更多