我有一个PHP函数,我希望将返回所有数据。现在的问题是它将返回第一行调用然后挂出,我不知道为什么。
function get_user_info($id,$field='')
{
//connect to database
include_once("../config.php");
$qry= "SELECT `$field` FROM `".$user_table."` WHERE `id` ='$id'";
//die($qry);
$result=mysql_query($qry);
if($result) {
if(mysql_num_rows($result)>0) {
//query successful
$data=mysql_fetch_row($result);
$user_info= $data[0];
}
else{
$user_info ="invalid field";
}
}
else{
$user_info="invalid data";
}
return $user_info;
}
如果我运行echo (get_user_info($user_id,'username')." ".get_user_info($user_id,'username'));
这样的函数它会返回username invalid data
对于我的生活,我无法弄清楚为什么它不能将数据与{{1}的每一行相关联}
编辑:似乎在get_user_data
死亡,这会返回错误的表格名称''
EDIT2:看起来问题是我只包含配置文件一次并使用我的表名变量,当我第二次尝试调用时,该变量未被设置。
编辑3: 这是最后的功能
$result=mysql_query($qry);
答案 0 :(得分:3)
使用
function mysql_fetch_all($res) {
while($row=mysql_fetch_array($res)) {
$return[] = $row;
}
return $return;
}
和
$data = mysql_fetch_all($result);
答案 1 :(得分:2)
我现在看到你想做什么。
首先,你对这种功能的想法非常棒。只有少数人来过它 但实施似乎并不那么好。
您正在尝试创建mysql帮助程序函数和专用函数以立即获取特定用户数据。让我告诉你如何制作前者,然后让我们看看你是否需要后者。
每个php开发人员都需要一个像你这样的功能,但通用的功能 - 从查询中获取单个值,而不需要输入大量重复的清理参数代码,并获取数据和错误控制等内容。
以下是此类函数的示例,使用占位符将数据传递到查询中。 printf系列的这些占位符,因此,您必须使用%s
来表示字符串,并使用%d
来表示int
function dbgetvar(){
$args = func_get_args();
$query = array_shift($args);
foreach ($args as $key => $val) {
$args[$key] = mysql_real_escape_string($val);
}
$query = str_replace("%s","'%s'",$query);
$query = vsprintf($query, $args);
$res = mysql_query($query);
if (!$res) {
trigger_error("dbgetarr: ".mysql_error()." in ".$query);
return FALSE;
} else {
$row = mysql_fetch_row($res);
if (!$row) return NULL;
return $row[0];
}
}
在配置文件中使用此功能,您可以通过这种方式获取用户信息
$name = dbgetvar("SELECT name FROM users WHERE id=%d",$_GET['id']);
以及许多其他类似的东西
$name = dbgetvar("SELECT id FROM users WHERE name=%s AND surname = %s",
$_GET['name'],
$_GET['surname']);
我怀疑你将不再需要userinfo的专门功能。但是,也可以基于此功能
来完成答案 2 :(得分:1)
嗯,您只获取一行数据,因为$data=mysql_fetch_rows($result)
仅提供数据集的第一行。如果要返回所有数据,则需要使用while循环使用数据填充数组。
$data_arr= array();
while($data=mysql_fetch_assoc($result)){
array_push($data_arr, $row);
}
然后你可以从函数中返回$data_arr
。
答案 3 :(得分:0)
我承认在发布这个问题时我犯了一个错误。我没有发布函数内部使用的变量。这个变量是造成这个问题的原因。这与问题编辑3中的连接一起包含了工作形式的最终功能。
答案 4 :(得分:0)
您好我也遇到过非常类似的情况。 我已经创建了一个自定义函数来从表中返回值。 如果字段存在与否,您也可以通过返回true false来增强它。
function getuserinfo($table, $matchid, $uid, $field)
{
$sql=mysql_query("select $field from $table where $matchid=$uid");
$row=mysql_fetch_array($sql);
$userinfo=$row[0];
return $userinfo;
}
您可以使用上述功能: -
<?php echo getuserinfo('usertable', 'id', $userid, 'fullname' );
echo getuserinfo('usertable', 'id', $userid, 'lastname' );
?>
随意发表评论。