gpt4 book ai didi

php - 我应该在 PHP 中使用单独的变量来定义我的 SQL 语句句柄吗?

转载 作者:行者123 更新时间:2023-11-29 04:24:49 25 4
gpt4 key购买 nike

所有 3 个选项是否相同(是/否)还是一个更好(A/B/C)?

选项 A - (1) 在变量 $sql 中定义 SQL 字符串,以及 (2) 使用“方法”prepare< 定义语句句柄 在变量 $sql 上编写语句,以及 (3) 使用 execute 函数激活步骤 2 中语句的组合。

    $sql = "SELECT * FROM table1";
$sth = $dbh->prepare($sql);
$sth->execute();


选项 B - 与选项 C 相似,因为 ->query 方法直接在 db 对象上使用,并且与选项 A 相似,因为 sql 语句保持独立。

    $sql = "SELECT * FROM table1";
$sth = $dbh->query($sql);


选项 C - 语句句柄是 sql 查询本身(不引用任何其他变量,只使用一种方法。

    $sth = $dbh->query("SELECT * FROM table1");


问题:

  • 这两个选项是否产生相同的结果?
  • 如果它们产生相同的结果,是否推荐一种方法(即最佳实践)?
  • 我是否正确使用了“变量”、“方法”和“函数”等词汇?
  • 尽管没有明确使用 ->query() 方法,选项 A 是否仍然查询数据库?
  • 将 sql stmnt 包含在单独的变量中与包含在 PDO 语句中有哪些优点/缺点?

  • 最佳答案

    我会说这两种方法在使用字符串变量或直接文本字符串方面是相同的。

    假设您使用 PDO,准备语句和调用查询语句之间存在差异。

    在情况 A 中,prepare 语句将使数据库创建一个计划,以便可以重新执行该语句而无需重新解析查询字符串。

    在情况 B 中,查询立即执行。

    在您给出的示例中,案例 B 会运行得更快一些。但是,如果您的语句使用参数,则由于占位符已被驱动程序替换,案例 A 将使您受益于额外的安全性。

    关于php - 我应该在 PHP 中使用单独的变量来定义我的 SQL 语句句柄吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14063527/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com