使用mysqli_real_escape_string清理数据

时间:2014-01-29 00:04:49

标签: php mysql oop pdo mysqli

我学会了以下方法来清理数据

function sanitize($data)
{
return mysql_real_escape_string( $data);
}

然后,对于不了解它的初学者来说,对mysql中某些扩展的弃用变得令人沮丧,但是正确地了解PHP是一种学习经验。建议使用 mysqli_real_escape_string ,因为这个函数需要2个参数,我有以下

function sanitize($data){

  // 1. Create a database connection
  $db = new mysqli('localhost','root','somepass','secured_login');      
  if($db->connect_errno){
      $connect_error = 'Sorry, we are experiencing connection problems.';   
      die ($connect_error);
  }
   return htmlentities(strip_tags(mysqli_real_escape_string($db, $data)));
}

然而,我一直认为许多PHP程序员高度建议使用PDO方法

我为这么久的介绍道歉我的问题是......使用修改后的函数sanitize是否安全?使用 mysqli_real_escape_string 代替 mysql_real_escape_string

如果没有!!然后通过使用PDO我需要学习OOP PHP而不是程序。我希望我能正确地解决这个问题。混合编程方向(程序和OOP)是不受欢迎的。

长时间使用PDO的真正优势是什么?谢谢!

1 个答案:

答案 0 :(得分:1)

恕我直言,你必须学习如何使用PDO驱动程序通过重新发明轮子来防止头痛。 使用像PDO这样的OOP驱动程序,你也可以通过扩展类覆盖一些方法并改变几行代码来做很酷的事情。 您还可以使用依赖注入的PDO派生对象。 您可以通过编辑PDO :: engine变量来更改数据库的类型。

另外,您可以轻松防止第一种类型的SQL ininctions