Mysqli还是PDO?准备好的陈述。客户端准备好的声明

时间:2014-01-13 01:12:33

标签: php pdo mysqli prepared-statement

我使用PHP msqli设置了一个包含数据库连接和查询的网站。

现在我意识到准备好的陈述是最佳实践,我正在研究如何实施它们;重写mysqli数据库连接代码以及PDO格式的数据库查询或只使用mysqli预处理语句。

  1. 我从PHP API文档中看到,mysqli支持服务器端预处理语句,但客户端预处理语句不支持。何时可以使用客户端准备好的声明?我理解准备语句的唯一目的是查询数据库,因此始终会涉及服务器端语言,因此始终可以使用服务器端预处理语句。

  2. 从下面的链接可以看出,下面的预备语句可以与我的mysqli连接一起使用。

  3. http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php

        if (!($stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)"))) {
        echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
        }
    

    当我查看PDO文档时:使用id样式占位符而不是?。以下可以与mysqli连接一起使用吗?除了让事情更容易阅读之外还有什么好处?

       $stmt = $conn->prepare('SELECT * FROM myTable WHERE id = :id');
       $stmt->execute(array('id' => $id));
    

    我应该忘记mysqli并且只是加快PDO的速度吗?

    非常感谢任何指导。看看如何处理这个问题。

1 个答案:

答案 0 :(得分:3)

这里有几个问题。这是我的简短回答。

  • 如果您 使用mysql数据库
  • ,请使用msqli
  • 如果您想支持更多数据库(SQL server,oracle等...)
  • ,请使用PDO

使用您喜欢的任何一种,当涉及 mysql数据库时,它们都将以相同的方式为您提供服务。

现在您可以看到PDO具有明显的优势,因为您可以使用相同的代码与不同的数据库进行通信。