2013-04-02 24 views
0

我想使用mysql_fetch_row从数据库中获取单个行,但是当我回显它时,将列放置为行,例如$ row_columns [0]是列1和$ row_columns [1]是第2列,允许我向您展示我正在使用的代码。mysql_fetch_row获取列而不是行

mysql_select_db($database_Takeaway, $Takeaway); 
    $query_columns = "SELECT * FROM `rest_site` WHERE linkid = '$rest_id'"; 
    $columns = mysql_query($query_columns, $Takeaway) or die(mysql_error()); 
    $row_columns = mysql_fetch_row($columns); 

并显示它。

echo($row_columns[0]) 

我试图

的print_r($ row_columns)

并且那反馈以下

阵列([0] => 1001 [1] = > [2] => [3] => 0 [4] => [5] => 1837 [6] =>测试标题[7] =>测试文本[8] => [9] => [10 ] =>)

以上是全部1行数据,而我需要它是单个列,因此我可以执行类似以下操作的操作。

echo $row_columns[0]['name'] 
echo $row_columns[0]['postcode'] 

我一直在做这个搜索的很多,似乎无法找到任何帮助,我已经检查php.net以及一般的谷歌搜索和当然堆栈溢出,从而会很感激你帮助这一点。

我希望我已经明确了这个问题。

感谢

+3

这就是它应该做的事情,它返回查询中的下一行。没有mysql函数一次返回所有行,你必须在循环中调用mysql_fetch_XXX函数之一。 – Barmar

回答

1

您应该使用mysql_fetch_assoc()获得与列名的结果。

此外,如果你不把它放到循环中,你将只会收到第一行查询。更好的用法是:

mysql_select_db($database_Takeaway, $Takeaway); 
$query_columns = "SELECT * FROM `rest_site` WHERE linkid = '$rest_id'"; 
$columns = mysql_query($query_columns, $Takeaway) or die(mysql_error()); 
while ($row_columns = mysql_fetch_assoc($columns)) { 
    echo $row_columns["name"]; 
    echo $row_columns["postcode"]; 
} 
-1

SELECT *没有适当的语句,你最好列表,你需要的所有列。使他们明确也有助于我们回答你的问题。

此外,请始终输入查询! mysql_real_escape_string()

作为一个猜测,我认为你错过了一个事实,即获取查询结果总是必须逐行读取。你知道你需要一个循环吗?

另外,如果您想要列名称,请使用mysql_fetch_assoc()

+0

SELECT *是有效的SQL。 –

+0

是的,但我会批评说“*”几乎总是对性能不利,像这个例子所证明的那样,模糊了实际处理数据的愿景。 'SELECT *'在查询的第一个草稿中可以正常工作,但如果它未更改为显式列,则此表中的任何新列将自动被此查询拉取。试想一下,用户表开始变小,然后为用户头像添加一列,从而允许每个用户1 MB,并且该查询永远不会处理图像。再见,表现。 – Sven

0

mysql_fetch_row只是一个枚举数组。

您在寻找mysql_fetch_array,从而得到一个关联和枚举数组,因此您可以使用字符串文字数组索引。

您还应该查看mysqli或PDO,因为从PHP 5.5开始不推荐使用mysql。

链接:mysql_fetch_array Documentation