我在下面有这个代码,我试图将查询结果作为包含数组键的数组作为表字段名称,并将值作为字段的结果。到目前为止,我有这个:
$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;新产品名称)等。 感谢您提供任何帮助和建议
答案 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);
应该解决你的问题。