我正在尝试返回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条目。
感谢您的帮助,我喜欢这个社区!
答案 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 ...)中也许是个更好的主意。