【问题标题】:mysqli_query($conn, $sql) or $conn->query($sql)mysqli_query($conn, $sql) 或 $conn->query($sql)
【发布时间】:2017-06-22 09:08:59
【问题描述】:

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

到目前为止,我一直在使用 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。有人会说 Procedural 比 OOP 好,你不应该使用 OOP。我认为 OOP 对人类来说更容易跟踪变量,但意见不是这里的答案;)为了安全起见,请查看可见性:php.net/manual/en/language.oop5.visibility.php
  • 当谈到程序 VS OOP 时,除了可见性之外,我想不出。可能会有更多专业用户加入
  • 如果你想谈谈mysqli内部的安全性,我建议你查看prepared statement。这是一个加号:php.net/manual/en/mysqli.quickstart.prepared-statements.php 并且主要在 OOP 中处理

标签: php security oop mysqli procedural


【解决方案1】:

都没有。

三点说清楚:

  1. 有很多值得“学习”的地方。对象 syntax 看起来很傻:只是一个访问方法或属性的箭头。你肯定已经开始了。
  2. 第二个选项只会让你少打字

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

我知道 OOP 比程序化更好

这在这里无关紧要。不要将面向对象编程与对象语法混淆。前者是一个非常复杂的主题,需要数年时间才能学习,而且您几乎不会很快掌握它。虽然对象语法只是一种语法 - 不多不少。没有什么太复杂的担心,也没有任何显着的好处

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-09
      • 2011-09-23
      • 2015-11-17
      • 2019-07-24
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      相关资源
      最近更新 更多