2016-09-28 22 views
-3

我有PHP代码这样如何转换MySQL来排列结果与数

$sql = mysql_query("SELECT userName FROM `rcpa_users` WHERE upline_users = '$selectuname'"); 
while($tjans = mysql_fetch_array($sql)){  

print_r($tjans); 

} 

但输出显示该

Array ([userName] => mita) 
Array ([userName] => wendyang) 
Array ([userName] => viviekosasih) 

现在,如何将数组转换这样的结果

Array 
(
    [0] => mita 
    [1] => wendyang 
    [2] => viviekosasih 
) 

所以我可以用echo $ tjans [0],$ tjans [1],$ tjans [2]

谢谢..

+0

初学者停止使用'mysql_ *',因为它已被弃用并在PHP 7中删除。开始学习使用'mysqli_ *'或PDO –

+1

这只是一个简单的数组赋值'$ array [] = $ tjans ['userName']' – Ghost

+0

'mysql_fetch_array()'将以数字键和字段名作为键返回。但是,如果你要求所有的行都要对齐,那么你必须将数据推送到循环内的数组中。 – Sasikumar

回答

1

mysql_fetch_assoc() - 从结果集中取得一行作为关联array.This函数将返回一行作为关联数组,其中列名会存储相应的值的键。

描述:返回一个关联数组,它对应于获取的行并将内部数据指针向前移动。 mysql_fetch_assoc()等同于使用MYSQL_ASSOC调用mysql_fetch_array()作为可选的第二个参数。它只返回一个关联数组。

之后,您需要执行array_values(),以便它将所有值转换为数字键的数组。

array_values - 返回的数组的所有值

array_values()返回从阵列和索引阵列数值的所​​有值。

如果查询返回多行作为输出,你可以喜欢这种方法:

$sqlxx = mysql_query("SELECT userName FROM rcpa_users WHERE upline_users = '$selectuname'"); 
$final_tjans = array(); 
while($tjans = mysql_fetch_assoc($sqlxx)) 
{ 
    $final_tjans[] = $tjans['userName']; 
} 
print_r($final_tjans); 

如果你的代码只返回单列作为输出:

$sqlxx = mysql_query("SELECT userName FROM rcpa_users WHERE upline_users = '$selectuname'"); 
$tjans = mysql_fetch_assoc($sqlxx)); 
$final_tjans = array_values($tjans); 
print_r($final_tjans); 

例如:

<?php 
$array = array("size" => "XL", "color" => "gold"); 
print_r(array_values($array)); 
?> 

输出:

Array 
(
    [0] => XL 
    [1] => gold 
) 

注:mysql扩展使用被废弃在PHP 5.5.0,它是PHP 7.0.0中删除。相反,应该使用MySQLi或PDO_MySQL扩展。

+0

输出显示:( Array([0] => mita)Array([0] => wendyang)Array([0] => viviekosasih) – Zayn

+0

使用此php代码 $ sqlxx =的mysql_query( “选择的userName FROM'rcpa_users' WHERE upline_users = '$ selectuname'”); \t \t \t \t \t \t \t而($ tjans = mysql_fetch_assoc($ sqlxx)){ \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t print_r(array_values($ tjans)); \t \t \t \t \t \t \t} – Zayn

+0

你通过执行查询 –

0

根本不需要运行循环。存储您的结果数组:

$tjans = mysql_fetch_assoc($sql); 
$tjans = array_values($tjans); 
1

当你有多个记录,那么简单地获取数组与array_values将无法正常工作,因为它只会返回一行。 要从此查询中获取所有行,您需要通过每行读取。 像下面

if (mysql_num_rows($result) > 0) { 
    $tjan = array(); 
    while($row = mysql_fetch_assoc($result) ) { 
     $tjan[] = $row['price']; 
    } 
    print_r($tjan); 
} 

然后在阵列必须是循环前空白添加“价格”字段。 最后你会得到一个你想要的数组。 干杯,

+0

尽管这段代码可能解决这个问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高质量您的帖子。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – andreas

+0

非常感谢,我补充说,我有些新的回答,所以现在可能还需要一些更正。但谢谢指出它。 –

0

首先,您应该使用mysqli而不是mysql,因为它已折旧并且不需要使用任何类型的循环,因为您的Select查询将获取与您的where条件匹配的所有记录。以下是您可能使用的代码片段。

$sql = mysql_query("SELECT userName FROM `rcpa_users` WHERE upline_users = '$selectuname'"); 
$tjans = mysqli_fetch_assoc($sql); 
print_r(array_values($tjans)); 
0

所有你所要做的就是创建一个数组和的userName存储进去,while循环外面打印阵列查看输出。

$new_array = array(); 
$sql = mysqli_query($conn, "SELECT userName FROM `rcpa_users` WHERE upline_users = '$selectuname'"); 
while($tjans = mysqli_fetch_object($sql)){ 
    $new_array[] = $tjans->userName; 
} 

print_r($new_array); 

我在你的代码中改变了什么?

  1. 删除所有mysql_*mysqli_*
  2. userName的进一步存储创建阵列并存储。
  3. 在循环外部打印新数组。
  4. 最后一个是使用$conn变量。这是连接字符串,你必须了解这一点。 click here

注:original MySQL extension现在已经过时, 并连接到数据库 时会产生E_DEPRECATED错误。而应使用 MySQLiPDO_MySQL扩展名。