我已经看到有很多方法可以将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'];
}
这只是我能想到的两个。
上述方法之一优于其他方法吗?如果是这样,为什么?
是否存在比其中任何一种更有效的替代方法?
答案 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'];
}
在第一个例子中?