我想要我的数组,就像这样:
array("userid"=>"username","1"=>"ganeshfriends","2"=>"tester")
mysql查询这样的东西:
$query = select username, userid from tbluser
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
$items = array($row['userid']=>$row['username']);
}
print_r($items);
如何将用户ID设为密钥,用户名为val?
答案 0 :(得分:5)
试试这个:
$query = "select username, userid from tbluser";
$result = mysql_query($query);
$items=array();
while($row = mysql_fetch_array($result)){
$items[$row['userid']]=$row['username'];
}
print_r($items);
问题是您在while块的每个循环中删除并重新分配结果数组($ items)
答案 1 :(得分:3)
由于每个人都在暗示同样的事情,我想我也可以加入。
当我遇到来自sql值的键的情况时,我喜欢先将它们设置为变量,这样看起来更好看:
$query = "select username, userid from tbluser";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
$userid = $row['userid'];
$username = $row['username']
$items[$userid] = $username;
}
print_r($items);
它可能会添加两行,但它确实更容易在眼睛上,并避免括号中的括号。
答案 2 :(得分:1)
你可以这样做:
$arr = array('userid' => 'username');
$result = mysql_query($query);
if(!$result) die("Query failed");
while($row = mysql_fetch_array($result)){
$arr[$row['userid']] = $row['username'];
}
答案 3 :(得分:0)
使用其他变量,比如Anthony,我只想说,不记得striplashes(我认为你把它们写入tha数据库时已经完成了mysql_real_escape_string())
while($row = mysql_fetch_array($result)){
$userid = $row['userid'];
$username = stripslashes($row['username']);
$items[$userid] = $username;
}
答案 4 :(得分:0)
由于您只使用关联访问,我建议使用mysql_fetch_assoc()
代替mysql_fetch_array()
因为你没有想要一个由mysql_fetch_array()
给出的关联数组,它会创建2个数组,一个数组为int-indexes
,另一个数量为string-indexes
(assoc [iative]),即使这个简短的脚本没有使用太多内存并且可能具有高速度,但您应该始终记住performance
。