【发布时间】:2012-06-04 21:43:48
【问题描述】:
PDO sql 代码:
while($r = $q->fetch(PDO::FETCH_ASSOC)){
$gg = join('</td><td>', $r);
echo "<tr><td>" . $no_count . "</td><td>" . $gg . "</td></tr>";
$no_count = $no_count + 1;
}
变量$r是记录,如何回显$r的字段名?
假设$r 携带来自“产品”和“价格”两个不同字段的记录。 $r 的值为“apple”、“130”。如何将“usd”添加到“130”中?
我需要类似.... if $field_name == "$r['price']" { $r = join('usd', $r); };
感谢 Mike B,我快到了:
while($r = $q->fetch(PDO::FETCH_ASSOC)){
foreach ($r as $name => $value) {
if ($name == "price"){
$r = "usd" . $value; // this line got problem, how to change the value in an array variable $r?
}
}
$gg = join('</td><td>', $r);
echo "<tr><td>" . $no_count . "</td><td>" . $gg . "</td></tr>";
$no_count = $no_count + 1;
}
【问题讨论】:
-
只是一点点改进,在连接到数据库后运行这段小代码以从
fetch()方法中删除PDO::FETCH_ASSOC:$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);它默认所有获取到 FETCH_ASSOC,使事情看起来更干净。 -
@zac1987,在您提供的代码中,我看不出
$r是130,因为$r只分配了PDOStatement::fetch()的返回值,它在传递@ 时返回一个关联数组987654334@。也许您向我们展示了错误的代码?您只使用一次$r作为join()的参数。var_dump($r);在循环的顶部,你会看到结构。 -
@Mike B,字段名称只有在用户选择时才可以是“价格”。但是当用户没有选择它时,字段名称将不再有“价格”。这是我的 sql 选择语句:
$sql = "SELECT " . $setting_name_left_with_sign . " FROM sale";。如您所见,我不知道字段名称,因为字段名称在数组变量中。 -
@Mike B,是的,我不知道如何使用数组...我已经更新了我的问题。谢谢