Mysql查询获取字段名称和结果作为数组键和数组值

时间:2014-02-12 10:24:16

标签: php mysql sql arrays

我在下面有这个代码,我试图将查询结果作为包含数组键的数组作为表字段名称,并将值作为字段的结果。到目前为止,我有这个:

$query='select      
en_product_name,de_product_name,fr_product_name,ru_product_name    
from products where id="'.$pid.'"';    
$result=mysql_query($query) or die('Mysql Error:'.mysql_error().'<br /> Query:'.$query);    
$num_rows=mysql_num_rows($result);    
$row = mysql_fetch_array($result);    
$columns = mysql_num_fields($result);    
$fields =array();    
for($i = 0; $i < $columns; $i++) {     
echo $fields = mysql_field_name($result,$i).'<br />';
}    

这个$ fields只返回字段名称..我怎样才能得到结果:     数组([en_product_name] =&gt;新产品名称,[de_product_name] =&gt;新产品名称)等。 感谢您提供任何帮助和建议

4 个答案:

答案 0 :(得分:3)

试试这个

$query='select en_product_name,de_product_name,fr_product_name,ru_product_name    
    from products where id="'.$pid.'"';    
$result=mysql_query($query) or die('Mysql Error:'.mysql_error().'<br /> Query:'.$query);    
$num_rows=mysql_num_rows($result);    
$row = mysql_fetch_array($result);    
$columns = mysql_num_fields($result);    
$fields =array();    
for($i = 0; $i < $columns; $i++) {     
    $field = mysql_field_name($result,$i);
    $fields[$field] = $row[$field];
}  

print_r($fields);

注意:

mysql_ *已被弃用。请改用PDO(php.net/manual/en/book.pdo.php)或mysqli_ *。否则会出现安全问题。

答案 1 :(得分:0)

尽量避免使用mysql_ *函数,因为它已从PHP 5.5中弃用,并且将来会被删除。所以使用mysqli_ * function.like this

$con = mysqli_connect("localhost","username","pwd","dbname");
$array = array();
$equery1223 = "SHOW COLUMNS FROM products ";
$eresults1223 = mysqli_query($con,$equery1223) or die(mysqli_error($con));
$i=0;
while($rows3 = mysqli_fetch_array($eresults1223))   
   {
      if($rows3['Field'] ="en_product_name" || $rows3['Field'] ="de_product_name" || $rows3['Field'] ="fr_product_name" || $rows3['Field'] ="ru_product_name" ) 
      {  $array[$i]=$rows3['Field'];$i++; }
   }
$array2 = array();$i=0;
$equery1224 = "select * FROM products ";
$eresults1224 = mysqli_query($con,$equery1224) or die(mysqli_error($con));
$i=0;
while($rows4 = mysqli_fetch_array($eresults1224))   
   {
      $array2[$array[$i]]=$rows4[$array[$i]];$i++;
   }

答案 2 :(得分:0)

考虑将mysql_fetch_array替换为mysql_fetch_assoc

来自mysql_fetch_assoc的文档:

Returns an associative array that corresponds to the fetched row and moves the internal data pointer ahead. mysql_fetch_assoc() is equivalent to calling mysql_fetch_array() with MYSQL_ASSOC for the optional second parameter. It only returns an associative array.

更新的代码:

$query='select en_product_name,de_product_name,fr_product_name,ru_product_name    
    from products where id="'.$pid.'"';    
$result=mysql_query($query) or die('Mysql Error:'.mysql_error().'<br /> Query:'.$query);    
$num_rows=mysql_num_rows($result);    
$row = mysql_fetch_assoc($result);

答案 3 :(得分:0)

所以你想访问key =&gt;我正在使用while语句来清除答案。

您可以使用以下功能和参数:

while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"];
    echo $row["fullname"];
    echo $row["userstatus"];
}

或者

$row = mysql_fetch_array($result, MYSQL_ASSOC);

应该解决你的问题。

相关问题