繁体   English   中英

获取SQL查询结果

[英]getting results of SQL query

我已经看到有很多方法可以将SQL查询的结果转换为可用的格式(即变量)。

如果我有一个定向的SQL查询,并且知道该查询将返回一组期望值,可以说查询一个客户编号以提取数据,城市,州,姓氏和名字等。

代码示例如下:

$example = '50';
$result = mysql_query("SELECT * FROM customers WHERE customer_ID = '$example'",$db);
while ($row = mysql_fetch_assoc($result)) {
  foreach ($row as $col => $val) {
    if ($col == 'firstname') {
      $customerfirstname = $val;
    }
  }
}

或另一种方式:

$result = mysql_query("SELECT * FROM customers WHERE customer_ID = '$example'",$db);
$myResultArray = array();

while ($row = mysql_fetch_assoc($result))
  $myResultArray = $row;

  foreach ($myResultArray as $val) {
    $customerfirstname = $val['firstname'];
  }

我只能想到这两个。

上述方法中的一种优于其他方法吗? 如果是这样,为什么?

有没有比这两种方法更有效的替代方法?

都不是首选。

foreach是多余的。

由于知道所需的字段名称,因此可以执行以下操作:

while ($row = mysql_fetch_assoc($result)) {
    $customerfirstname = $row['firstname'];
}

如果由于某种原因确实需要应用条件,则可以测试字段在数组中的存在:

while ($row = mysql_fetch_assoc($result)) {
    if (isset($row['firstname'])) {
        $customerfirstname = $row['firstname'];
    }
}

最后,由于您似乎正在通过主键进行选择,因此while循环也是不必要的:

if ($row = mysql_fetch_assoc($result)) {
    $customerfirstname = $row['firstname'];
}

我已经使用了第一个示例,您在我做过的每个网站中提出的示例都需要数据库,并且还没有使我失望。 至于一个比另一个更好,我会说不。 这只是一个品味问题。

有很多方法。 这是一个快速的方法,但是我更愿意使用DTO进行设置并以这种方式访问​​它。

$query = "SELECT first_name, last_name, city FROM customers WHERE customer_id = '$example'";
$result = mysql_query($query);

// If you are expecting only one row of data, then use this:
list($first_name, $last_name, $city) = mysql_fetch_row($result);

//several rows:
while(list($first_name, $last_name, $city) = mysql_fetch_row($result)){
     echo $first_name;
}

我似乎缺少了一些东西...

为什么不呢?

$result = mysql_query("SELECT * FROM customers WHERE customer_ID = '$example'",$db);
while ($row = mysql_fetch_assoc($result)) {
  $customerfirstname = $row['firstname'];
}

在第一个例子中?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM