SQL查询返回字段名但不返回值

时间:2013-09-20 01:14:08

标签: php mysql sql

enter image description here

我正在尝试返回Field值。我在PHP中尝试了它并且它可以工作,但一遍又一遍地返回相同的字段。通过直接查询进行测试,这就是我得到的......

以下是我用来获取数据的函数:

<?php

function display_orders( $user_id, $limit ) {

    $data = array();

    $user_id = (int)$user_id;
    $limit = (int)$limit;

    $func_num_args = func_num_args();
    $func_get_args = func_get_args();

    //print_r($func_get_args);

    if ($func_num_args > 1) {

        unset($func_get_args[0]);
        unset($func_get_args[1]);


        $fields = '`' . implode('`, `', $func_get_args) . '`';

            for($x = 0; $x < $limit; $x++) {    

                $data[] = mysql_fetch_assoc( mysql_query("SELECT $fields
                                                          FROM  `users` ,  `vendor` 
                                                          WHERE $user_id = users.id 
                                                          AND $user_id = vendor.user_id 
                                                          ORDER BY vendor.DateRequested DESC") );

            }

        return $data;
    }

}

?>

这将返回以下内容,它将一遍又一遍地循环newegg条目。

enter image description here

感谢您的帮助,我喜欢这个社区!

2 个答案:

答案 0 :(得分:1)

问题是您引用列名称,这意味着对于查询结果中的每个匹配行,该值将作为列返回。

只需删除列周围的引号即可。首先尝试一列,验证它是否有效,然后对其余列进行相同操作。

答案 1 :(得分:1)

SELECT 'field'(单引号,如在您的phpmyadmin查询中)选择文字字符串 field

SELECT `field`(反问题,就像在PHP查询中一样)从名为field的字段中选择

mysql_fetch_assoc()从查询结果句柄返回单行。您应该捕获mysql_query()的返回值,这是一个结果句柄,并从中反复“获取”行。相反,您多次调用mysql_query(),每次都返回一个新的结果集,并且每次从结果集中获取第一行。

更新

你想要这样的东西:

$results = mysql_query(...);
for ($x = 0; $x < $limit; $x++) {
  $data[] = mysql_fetch_assoc($results);
}

$limit置于查询本身(LIMIT ...)中也许是个更好的主意。