【问题标题】:SELECT query inside PHP classPHP类中的SELECT查询
【发布时间】:2025-11-30 11:30:01
【问题描述】:

我正在尝试使用 GET 变量在 PHP 类中运行一个简单的 SELECT 查询。

$this->Token = $_GET['Token'] ?? null;

function getRows(){   
        $query = $this->db->query("SELECT * FROM store_product_images WHERE token = ".$this->Token." ORDER BY display_order ASC");
    

当我运行它时,什么都没有显示,如果我删除 WHERE 它工作正常

【问题讨论】:

  • 您的代码容易受到SQL injection 攻击。不要使用字符串连接构建查询,而是始终使用prepared statementsbound parameters。请参阅 this pagethis post 了解一些很好的示例。
  • 如果token 是一个字符串,你需要在值周围加上引号,但是使用准备好的语句可以解决这个问题和其他一些问题。
  • @NigelRen 它周围有引号吗?你能给我举个例子来说明你的意思吗?
  • 您错过了表示您在查询中传递了一个字符串的引号。你最好这样写[...] WHERE token = '{$this->Token}' ORDER BY [...]。无论如何,你真的应该考虑转义你的价值,或者更好地使用准备好的语句,正如另一个人提到的那样,你的代码容易受到 SQL 注入的攻击。

标签: php class


【解决方案1】:

你错过了报价

$query = $this->db->query("SELECT * FROM store_product_images WHERE `token`= '".$this->Token."' ORDER BY display_order ASC");

【讨论】: