【问题标题】:What can I use in php instead of (mysqli_real_escape_string)我可以在 php 中使用什么来代替 (mysqli_real_escape_string)
【发布时间】:2019-03-08 01:47:50
【问题描述】:

我已使用 oci_connect 连接到 oracle,但出现此错误:

警告:mysqli_real_escape_string() 期望参数 1 为 mysqli,资源在

所以我正在尝试更改 mysqli_real_escape_string() 以使用 oci...

这是我的代码:

$condition = '';

   $query = explode(" ", $_GET["search"]);
   foreach($query as $text)
   {

        $condition .= "VIDEO_TITLE LIKE '%".mysqli_real_escape_string($connect, $text)."%' OR ";
   }
   $condition = substr($condition, 0, -4);
   $sql_query = "SELECT * FROM TBL_VIDEO WHERE " . $condition;
   $result = oci_parse($connect, $sql_query);
   oci_execute($result);
   if(oci_num_rows($result) > 0)

【问题讨论】:

  • 为什么你认为你可以在 oracle 中使用 mysql API?
  • 我没有,我只是想从此链接更改代码。 webslesson.info/2016/05/… 进入 oci_connect
  • 只需使用准备好的语句。它比您正在做的更安全,并且无需调用像 mysqli_real_escape_string 这样的函数来清理您的数据
  • @Nick 关于我应该从哪里开始有什么建议吗?

标签: php mysqli oracle-call-interface


【解决方案1】:

我使用以下功能。准备好的语句绝对是大多数人的首选,但这是一个不错的选择:

<?php 
function mysql_escape_mimic($inp) { 
    if(is_array($inp)) 
        return array_map(__METHOD__, $inp); 

    if(!empty($inp) && is_string($inp)) { 
        return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $inp); 
    } 

    return $inp; 
} 

所以你会替换这一行:

$condition .= "VIDEO_TITLE LIKE '%".mysqli_real_escape_string($connect, $text)."%' OR ";

与:

$condition .= "VIDEO_TITLE LIKE '%".mysql_escape_mimic($connect, $text)."%' OR ";

我从这里借来的:http://php.net/manual/en/function.mysql-real-escape-string.php#101248

【讨论】:

  • 感谢您的帮助,我现在没有任何错误,但它无法正常工作......即使我搜索了我拥有的数据,它也会显示找不到数据......
  • 因为 mysql_escape_mimic 没有连接到数据库对吧?
  • @KwanheeHwang,绝对不是,它只是转换字符串并防止大多数类型的 SQL 注入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多