[英]how to return mysql data from a php function
我有一个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
对于我来说,我不知道为什么它不会将数据与get_user_data
每一行关联
编辑:它似乎在死于$result=mysql_query($qry);
返回错误的表名''
EDIT2:看起来问题在于我只包含了一次配置文件,并且为我的表名使用了一个变量,当我第二次尝试调用它时,该变量未设置。
编辑3:这是最终功能
//connect to database
if(file_exists('..config.php')){
include_once("../config.php");
}
function get_user_info($id,$field)
{
//get users table
global $user_table_name;
$qry= "SELECT `$field` FROM `$user_table` WHERE `id` ='$id'";
$result=mysql_query($qry) or die(mysql_error());
if($result) {
if(mysql_num_rows($result)>0) {
//query successful
$data=mysql_fetch_row($result);
$user_info= $data[0];
}
else{
$user_info =$qry;
}
}
else{
$user_info="invalid data";
}
return $user_info;
}
采用
function mysql_fetch_all($res) {
while($row=mysql_fetch_array($res)) {
$return[] = $row;
}
return $return;
}
和
$data = mysql_fetch_all($result);
好吧,我现在知道您要做什么。
首先,您具有这种功能的想法绝对是明智的。 只有很少的人来参加。
但是实现似乎不是那么好。
您试图同时创建mysql helper函数和专用函数以同时获取特定的用户数据。 让我告诉你如何制作前一个,然后看看是否需要后一个。
每个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的专门功能。 但是,基于此功能也可以完成
好吧,因为$data=mysql_fetch_rows($result)
仅给出数据集的第一行,所以您仅获取一行数据。 如果要返回所有数据,则需要使用while循环用数据填充数组。
$data_arr= array();
while($data=mysql_fetch_assoc($result)){
array_push($data_arr, $row);
}
然后,您可以从函数中返回$data_arr
。
嗨,我也遇到了非常相似的情况。 我做了一个自定义函数来从表中返回值。 如果该字段存在或不存在,您还可以通过返回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' );
?>
随时发表评论。
我承认发布此问题时犯了一个错误。 我没有发布在函数内部使用的变量。 导致此问题的原因是此变量。 问题的功能Edit 3以及内部包含的连接都包含工作形式的最终功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.