我有问题我在下面的脚本用于合并表并从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项如何解决这个问题?
答案 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;