Php 从数据库接收变量的最佳方法

Php 从数据库接收变量的最佳方法,php,mysql,sql,wordpress,Php,Mysql,Sql,Wordpress,我有一个自定义Wordpress表,其中包含以下内容: account_info id | account_id | wp_title | wp_url 1 | 12345 | website | website.com 获得结果的最佳(或最快)方式是什么 选项1: global $wpdb; $sql = "SELECT id, wp_title. wp_name FROM account_info"; $results = $wpdb->get_resu

我有一个自定义Wordpress表,其中包含以下内容:

account_info
id   | account_id | wp_title | wp_url
1    | 12345      | website  | website.com
获得结果的最佳(或最快)方式是什么

选项1:

global $wpdb;   

$sql = "SELECT id, wp_title. wp_name FROM account_info";
$results = $wpdb->get_results($sql);

if(!empty($results)) { 
    foreach($results as $r) {   
         $id = $r->id;
         $wp_title = $r->wp_title;
         $wp_name = $r->wp_name;

    }
} 
$id = $wpdb->get_var("SELECT id FROM account_info");
$wp_title = $wpdb->get_var("SELECT wp_title FROM account_info");
$wp_name = $wpdb->get_var("SELECT wp_name FROM account_info");
选项2:

global $wpdb;   

$sql = "SELECT id, wp_title. wp_name FROM account_info";
$results = $wpdb->get_results($sql);

if(!empty($results)) { 
    foreach($results as $r) {   
         $id = $r->id;
         $wp_title = $r->wp_title;
         $wp_name = $r->wp_name;

    }
} 
$id = $wpdb->get_var("SELECT id FROM account_info");
$wp_title = $wpdb->get_var("SELECT wp_title FROM account_info");
$wp_name = $wpdb->get_var("SELECT wp_name FROM account_info");

这取决于您的目标、查询语言和metta数据索引设计等

在上面的示例中,如果有多个选项可用,那么将结果作为上面的对象收集并遍历将是最佳选项


如果你只期望一个单一的结果是安全的,那么当你谈论“最佳”和“最快”时,在你的查询中限制1并相应地访问你的对象属性,那么这些并不是你需要考虑的唯一事情。可读性也是未来开发人员查看代码的关键

选项一清楚地表明,如果结果集不是空的,则可以围绕它们循环并设置一些变量。选项二是特定于框架的,这并不总是最好的方法

因此,在进行微优化之前,请确保可读性处于最佳状态-决不要为了另一个而牺牲一个

速度方面,只需确保正确索引数据库即可。您使用的是PHP可用的最快的循环。另外,选项二是进行多个数据库查询。始终尝试将多个查询合并为一个查询-您不需要对数据库进行大量实际上不需要的额外调用


您希望避免使用
global
关键字。这是一种不好的做法,会使代码不稳定。以另一种方式访问
$wpdb
变量,可以将其传递到函数中,也可以在其他地方包含文件。在谷歌上看一看并搜索一下。

IMHO,我推荐选项1,但更好的是,我建议使用许多作者建议的准备好的语句。它避免了协议的滥用,并使数据传输最小化

$stmt = $dbh->prepare("SELECT id, wp_title. wp_name FROM account_info");
if ($stmt->execute(array())) {
  while ($row = $stmt->fetch()) {
     $id = $row['id'];
     $wp_title = $row['wp_title'];
     $wp_name = $row['wp_name']; 
  }
}

很明显,选项1.一眼就能得到所有结果。尽可能减少数据库搜索次数。如果只需要获得一个变量,则选项2更好。