得到2个项而不是1个mysql数据库

时间:2013-09-13 20:31:37

标签: php mysql

我有问题我在下面的脚本用于合并表并从mysql获取数据

    $myboxexi=mysql_query('select box.id,box.page_name,box.title,box.connect,box.type,box.uid,box.description,box.image,box.url,box.status,box.date,box.time
    from boxes as box left join page_boxes as pages on box.uid=pages.uid and pages.uid="'.$session_id.'"');
    while($my_boxi=mysql_fetch_array($myboxexi)){
    $title=$my_boxi['title'];
    $bid=$my_boxi['id'];
    $ptitle=$my_boxi['page_name'];
    $connect=$my_boxi['connect'];
    $type=$my_boxi['type'];
    $iuid=$my_boxi['uid'];
    $description=$my_boxi['description'];
    $image=$my_boxi['image'];
    $url=$my_boxi['url'];
    $appr=$my_boxi['status'];
    $date=$my_boxi['date'];
    $time=$my_boxi['time'];
    $myinfo=mysql_query('select * from users where id="'.$iuid.'"');
    $my_boxi_info=mysql_fetch_array($myinfo);
    $user_id=$my_boxi_info['id'];
    $user_name=$my_boxi_info['user_name'];
    $thmb=$my_boxi_info['thumb'];
    if(strpos($thmb,'https://') !== false) {
    $thmbs=$thmb;
    }else
    {
    $thmbs='images/thumbs/'.$thmb;
    }

}

它工作正常,但问题是我得到双项如果我有1项然后我得到2项如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

我认为你得到2个值因为你有例如元素[0]和相同的元素key = name of column,所以只使用associatif结果:

更改此内容:

while($my_boxi=mysql_fetch_array($myboxexi)){
//data here.
}

对此:

while($my_boxi=mysql_fetch_array($myboxexi, MYSQL_ASSOC)){
//data here.
}

或者

while($my_boxi=mysql_fetch_assoc($myboxexi)){
//data here.
}

答案 1 :(得分:0)

mysql_fetch_array()返回双键数组。 e.g。

SELECT foo FROM bar


$row = mysql_fetch_array($result);

将为您提供数组:

$row = array(
    0 => 'value from foo',
    'foo' => 'value from foo'
);

由于您在返回的数组上盲目循环,因此您正在查找每个“重复”结果。如果您只想要其中一种字段类型,请尝试使用专用函数或可选类型参数e .g

$row = mysql_fetch_assoc($result); // return only string keys
$row = mysql_fetch_array($result, MYSQL_ASSOC); // ditto

答案 2 :(得分:0)

据推测,您获得了两个项目,因为两个页面具有相同的用户/会话ID:

select box.id, box.page_name, box.title, box.connect,box.type, box.uid, box.description,
       box.image, box.url, box.status,b ox.date,box.time
from boxes box left join
     page_boxes pages
     on box.uid = pages.uid and pages.uid = "'.$session_id.'"'

(对我而言,您怀疑是将uid - 通常意为“用户ID” - 设置为名为$session_id的变量,但这是另一回事。)

如果您只想要一个,请在查询末尾添加limit 1

select box.id, box.page_name, box.title, box.connect,box.type, box.uid, box.description,
       box.image, box.url, box.status,b ox.date,box.time
from boxes box left join
     page_boxes pages
     on box.uid = pages.uid and pages.uid = "'.$session_id.'"'
limit 1;