Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysqli还是自定义数据库类?_Php_Database_Mysqli_Sql Injection - Fatal编程技术网

Php Mysqli还是自定义数据库类?

Php Mysqli还是自定义数据库类?,php,database,mysqli,sql-injection,Php,Database,Mysqli,Sql Injection,我想知道是否真的需要自定义数据库类。我的意思是:我在网上看到了很多数据库抽象层和自定义数据库类。但我们为什么要重新发明轮子呢?如果我真的需要,为什么不使用mysqli原生类并扩展它呢? mysqli类是安全的、最新的和本地的。为什么人们用query()方法、fetch()方法和free()方法创建自己的类,而它们已经存在? Mysqli也准备了语句,这是防止sql注入的最安全的方法之一。它使Mysqli扩展更容易使用。在MySQLi中使用准备好的语句非常麻烦,需要大量代码,而且您可能会在任何地方

我想知道是否真的需要自定义数据库类。我的意思是:我在网上看到了很多数据库抽象层和自定义数据库类。但我们为什么要重新发明轮子呢?如果我真的需要,为什么不使用mysqli原生类并扩展它呢? mysqli类是安全的、最新的和本地的。为什么人们用
query()
方法、
fetch()
方法和
free()
方法创建自己的类,而它们已经存在?
Mysqli也准备了语句,这是防止sql注入的最安全的方法之一。

它使Mysqli扩展更容易使用。在MySQLi中使用准备好的语句非常麻烦,需要大量代码,而且您可能会在任何地方复制相同的基本代码

而使用包装器,您可以执行以下操作:

$rows = $db->Query ( '
  SELECT
    *
  FROM
    table_name
  WHERE
    field = ?
    AND field2 = ?
  ',
  Array (
    Array ( 's', 'some val' ),
    Array ( 'i', 42 )
  )
);

您还可以采用面向对象的方法从数据库访问数据。e、 g.将所有数据检索封装到一个php类中。并使用mysqli模块在类函数中编写所有数据检索方法

在普通SQL中,为常见的CRUD操作编写相同的重复代码是很麻烦的。看看对象关系映射程序是如何解决这个问题的:

@geon:MySQLi是一个PHP扩展。为什么这比$stmt=$dbh->prepare(“插入注册表(名称,值)值(:名称,值)”要好得多$stmt->bindParam(':name',$name)$stmt->bindParam(':value',$value);因为它的代码比你发布的要多得多。是的,但也有很多灵活性。使用您的函数,您只需创建直接查询,而实际上无法使用准备好的语句(声明一个语句并多次使用它)。当然可以,这只是一个示例。在我的类
Query
实际上返回一个准备好的语句中,我还有一个
GetRows
方法,它返回一个包含行的数组。所以你可以决定用哪一个。。。