【问题标题】:Correct way to escape input data before passing to ODBC在传递给 ODBC 之前转义输入数据的正确方法
【发布时间】:2011-04-19 08:50:43
【问题描述】:

我非常习惯使用 MySQL 和 mysql_real_escape_string(),但是我得到了一个使用 ODBC 的新 PHP 项目。

在 SQL 字符串中转义用户输入的正确方法是什么?

addslashes() 足够了吗?

我想现在而不是以后得到这个!

【问题讨论】:

    标签: php odbc escaping user-input mysql-real-escape-string


    【解决方案1】:

    PHP ODBC 驱动程序使用预准备语句代替字符串转义。使用odbc_prepare 准备SQL 语句,使用odbc_execute 传入参数并执行语句。 (这类似于您可以使用 PDO 执行的操作)。

    【讨论】:

    • 看起来和我想要的完全一样。但是,我对准备好的陈述也完全陌生。通过使用准备好的语句,我可以传入特殊字符而不用担心转义吗?例如要将 O'Brien 作为参数传入,我只需使用 odbc_exec 将其传入准备好的语句中?
    • 是的,这就是准备好的语句的用途。它们可以防止 SQL 注入,因为 DBMS 会为您处理参数。
    • 准备好的语句是最明智的方法。但实际上,并非所有 ODBC 驱动程序都支持它们。
    • @ÁlvaroG.Vicario 什么是不支持这些驱动程序的替代方案?
    • @PacMani - 我有 had that problem myself 并没有找到满意的答案。据我所知,您唯一的机会是阅读技术文档以了解 DBMS 机制并编写自己的转义函数。
    猜你喜欢
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 2018-12-22
    相关资源
    最近更新 更多