【问题标题】:How to insert result of mysql_real_escape_string() into oracle database?如何将 mysql_real_escape_string() 的结果插入 oracle 数据库?
【发布时间】:2012-04-13 01:02:25
【问题描述】:

为了在 (,') 等数据中插入特殊字符,我正在使用 mysql_real_escape_string() 函数,它工作正常。

现在我想在 Oracle 中插入值时使用相同的变量。

$str = 'N.G.Palace\'s Building',
    'xyzcity', '12345678','India','100001',12

这里的 $str 是 mysql_real_escape_string() 的结果。所以它转义了特殊字符。 现在我的 oracle 代码是这样的-:

 $qry ="INSERT INTO Ora_table(ship_to_street, ship_to_city,ship_to_country, ship_to_telephone, order_id, record_no) VALUES(".$str);

所以我怀疑 Oracle 不接受 mysql_real_escape_string 即 Palace\'s 返回的值(就像这个 mysql 函数在'单引号之前附加 \')? 那么谁能告诉我如何使用该变量 $str 将数据插入 Oracle 中?

我也试过这样-:

"q"."'"."c".$str."c"."'"

我们可以将它用于多个值,例如我的情况...尽管我仍然无法 在 oracle 中插入数据?

HOW to insert special characters in Oracle db?
like 'SWEET/HOME', 'CROY-BOY' etc. /,-,\ etc.

请告诉我..

【问题讨论】:

  • 在为 oracle 数据库构建 SQL 查询时,为什么要使用 MySQL 转义函数?!
  • Bcz,我首先将数据插入 Mysql 数据库并使用相同的变量通过 PHP 插入 Oracle。
  • 当您从 MySQL 数据库中读取数据时,您将获得没有任何转义的原始字符串 - 请记住,转义已完成,因此查询不会中断;或者用伪代码说:select(insert(escape(str))) == str
  • 好的...但是我的疑问是如何处理单引号问题,例如-('NGPalace's Building','xyzcity', '12345678','India','100001',12) 现在看看第一个值...它将如何解释 NGPlace 的 Building 只是一个值...因为 Palace 中有单引号,所以这就是为什么我无法将数据插入到 oracle 中。
  • 好吧,当将它插入到您的 oracle DB 时,您需要使用 php oracle 绑定中的适当函数再次对其进行转义。 或者像@BobJarvis 建议的那样做,正确分离查询和数据!

标签: mysql oracle insert quotes apostrophe


【解决方案1】:

我强烈建议您不要通过将字符串附加在一起来构建查询。这是一张直通地狱的门票 - 或者是提前一站的 SQL 注入城。 :-) 不过,说真的,如果您使用参数标记并将值绑定到参数标记,您将获得一些优势:

  1. 您不必逃避任何事情,并且
  2. 不用担心 SQL 注入。

分享和享受。

【讨论】:

    【解决方案2】:

    发件人:http://www.php.net/manual/en/function.stripslashes.php#94758

    function no_magic_quotes($query) {
    
            $data = explode("\\",$query);
            $cleaned = implode("",$data);
            return $cleaned;
    }
    
    // I'm using mysql_escape_string as a simple example, but this function would work for any escaped string.
    $query = "It's amazing! Who's to say this isn't a simple function?";
    $badstring = mysql_escape_string($query);
    
    echo '<b>Without function:</b> '.$badstring;
    echo '<br><br>';
    echo '<b>With function:</b> '.no_magic_quotes($badstring);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多