-4

我有问题我正在使用下面的脚本来合并表并从 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 个项目我该如何解决这个问题?

4

3 回答 3

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.
}
于 2013-09-13T20:35:56.170 回答
0

mysql_fetch_array()返回一个双键数组。例如

SELECT foo FROM bar


$row = mysql_fetch_array($result);

会给你数组:

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

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

$row = mysql_fetch_assoc($result); // return only string keys
$row = mysql_fetch_array($result, MYSQL_ASSOC); // ditto
于 2013-09-13T20:37:38.373 回答
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;
于 2013-09-13T20:38:42.297 回答