PHP中MySQL SELECT查询的回声结果

时间:2015-02-16 14:07:11

标签: php mysql select inner-join

我有一个页面,我希望根据另一个表中的值显示一个表中的单个值:

$username = 'Joe';
$query = 'SELECT * FROM chars WHERE uname = "$username"';
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_assoc($result);
$query = 'SELECT cname FROM chars INNER JOIN usrs 
    ON chars.cid = usrs.clastused WHERE usrs.uname = "$username"';
$q = mysql_query($query) or die(mysql_error());
$r = mysql_fetch_assoc($q);
echo '<p>q = "'.$q.'" and r = "'.$r['cname'].'"</p>'; //for debugging
foreach ($row['cname' as $opt) {
    $output .= '<option value=\"'.$opt.'\"';
    if ($opt=$r) {$output .= ' selected';}
    $output .= '>'.$opt.'</option>';
}

PHPMyAdmin提供我期望的响应 CNAME Joe $q提供资源ID#5 ,但$r为空。 我如何回应结果? 我想在一天结束时有一个下拉列表,其中 clastused 是预先选择的选项。

3 个答案:

答案 0 :(得分:0)

dataBase的结果是二维的:

result[0]['column1']
result[0]['column2']
result[0]['column3']
result[1]['column1']
result[1]['column2']
result[1]['column3']

因此,如果您的查询返回&#39; cname&#39;

你应该:

echo $r[0]['cname']

答案 1 :(得分:0)

我通过直接使用数组变量修复了这个问题:

foreach ($r as $opt) {
    $output .= '<option value=\"'.$opt.'\"';
    if ($opt=$cname) {$output .= ' selected';}  
    $output .= '>'.$opt.'</option>';
}

答案 2 :(得分:0)

您必须尝试使用​​print_r而不是echo作为其数组。 试试print_r($ r);