获得SQL查询的结果

时间:2011-10-07 21:07:22

标签: php sql

我已经看到有很多方法可以将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'];
  }

这只是我能想到的两个。

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

是否存在比其中任何一种更有效的替代方法?

4 个答案:

答案 0 :(得分:3)

两者都不是首选。

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'];
}

答案 1 :(得分:0)

我使用了你在我所做的每个需要数据库的网站上提出的第一个例子,但它还没有让我失望。至于一个比另一个好,我会说不。这只是一个品味问题。

答案 2 :(得分:0)

有很多方法。这是一个快速的,但我更喜欢使用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;
}

答案 3 :(得分:0)

我似乎错过了什么......

为什么不呢?

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

在第一个例子中?