mysqli_query($conn, $sql) 或 $conn->query($sql)

mysqli_query($conn, $sql) or $conn->query($sql)

我是网络开发的新手,我目前没有使用任何框架。

到目前为止,我一直在使用 mysqli_query($conn, $sql) 向 MySQL 服务器发送查询。

最近我读了另一种使用$conn - > query($sql)的技术。

我知道 $conn->query($sql) 是发送查询的 OOP 方式,mysqli_query($conn, $sql) 是程序方法。

我还没有学过面向对象 PHP 但是,我很快就会学习它,然后再转向框架。

有人可以告诉我使用 $conn->query($sql) 相对于 mysqli_query($conn, $sql) 的优势吗? 它更安全吗?还有别的吗?

我知道 OOP 比 Procedural 好,但我想知道主要的优点,从安全的角度(主要)!

"OOP is better than Procedural Programming" - 我会说这取决于。如果我们谈论的是性能,那么是的,OOP 比过程编程更高效、更有条理。如果您正在构建一个大型复杂项目,那么 OOP 是最佳选择。但是,如果我们谈论安全性,那么过程编程方法与 OOP 方法一样安全。特别是如果您使用 PDO。当您使用 PDO 时,您使用命名占位符而不是将变量直接传递到查询中,这有助于防止 SQL 注入等攻击。如果你使用 PDO,你不需要自己清理你的输入(消除额外的编码),因为 PDO 会处理这个。

我建议您从 PDO 开始学习,因为它遵循面向对象的编程风格,所以如果您从它开始,那么当您开始使用 OOPHP 编写代码时,您已经领先一步了。希望对您有所帮助。

都没有。

三分直截了当:

  1. "learn" 有很多值得注意的地方。对象 syntax 看起来很傻:只是一个访问方法或 属性 的箭头。你肯定已经去了。
  2. 第二个选项只是让你 更少打字:

    mysqli_query($mysqli, $query);
    vs.
    $mysqli->query($query); 
    
  3. 无论哪种方式,您都应该使用 PDO,而不是 mysqli

I know OOP is better than Procedural

这里只是无关紧要。不要混淆面向对象编程和对象语法。前者是一个非常复杂的话题,需要花费数年的时间来学习,而且你不会很快就掌握它。虽然对象语法只是一种语法——不多也不少。没有什么需要担心的太复杂,也没有任何显着的好处