首页 > 解决方案 > 如何在 PHP 5.6 的 mysql 查询中添加引号

问题描述

我有一个$categoryName值为 ABC/ABC 的变量(例如)。我需要在此文本“ABC/ABC”周围添加引号。这是我的 PHP 代码:

public function getCategoryID($categoryName)
    {
        $row = Db::getInstance()->getRow('
        SELECT `id_category`
        FROM ' . _DB_PREFIX_ . 'category_lang c
        WHERE c.`name` = ' . $categoryName);

        return isset($row['categoryName']);
    }

以及来自mysql的错误。

SELECT `id_category`
        FROM ps_category_lang c
        WHERE c.`name` = ABC/ABC LIMIT 1

如何解决这个问题呢 ?感谢帮助。

标签: phpmysql

解决方案


只需将引号放在字符串中。

    $row = Db::getInstance()->getRow('
    SELECT `id_category`
    FROM ' . _DB_PREFIX_ . 'category_lang c
    WHERE c.`name` = "' . $categoryName . '"');

正如评论中提到的,如果您使用准备好的语句来防止 SQL 注入,那会更好。如果你不能这样做,你应该确保$categoryName正确地逃脱。

请参阅如何防止 PHP 中的 SQL 注入?


推荐阅读