0

在此处输入图像描述

我正在尝试返回字段值。我在 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 条目。

在此处输入图像描述

感谢您的所有帮助,我爱这个社区!

4

2 回答 2

1

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

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

于 2013-09-20T01:22:59.463 回答
1

SELECT 'field'(单引号,如在您的 phpmyadmin 查询中)选择文字string 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 ...)中可能是一个更好的主意。

于 2013-09-20T01:32:21.913 回答