Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从php函数返回mysql数据_Php_Mysql_Function - Fatal编程技术网

如何从php函数返回mysql数据

如何从php函数返回mysql数据,php,mysql,function,Php,Mysql,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);

我有一个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\u info($user\u id,'username')。“”。get_user\u info($user\u id,'username'))
它返回
用户名无效数据
对于我来说,我不明白为什么它不能获取与每行
获取用户数据关联的数据

编辑:它似乎在
$result=mysql\u查询($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; 
}
使用


您只获取一行数据,因为
$data=mysql\u fetch\u rows($result)
只提供数据集的第一行。如果要返回所有数据,则需要使用while循环用数据填充数组

$data_arr= array();
while($data=mysql_fetch_assoc($result)){
    array_push($data_arr, $row);
}

然后您可以从函数返回
$data\u arr

我承认我在发布此问题时犯了一个错误。我没有发布函数中使用的变量。这个变量就是导致问题的原因。除了包含问题的函数edit3中的连接外,还包含工作形式中的最终函数

我现在明白你想做什么了

首先,你有这样的功能的想法是绝对聪明的。只有很少的人来参加。
但实施似乎并不那么好

您正在尝试创建mysql助手函数和专用函数,以同时获取特定的用户数据。让我告诉你如何做前一个,然后让我们看看你是否需要后一个

每个php开发人员都需要一个类似于您的函数,但它是通用函数——从查询中获取单个值,而无需键入大量重复的清理参数代码,也无需获取数据、错误控制等内容。
下面是此类函数的一个示例,使用占位符将数据传递到查询中。这些族的占位符,因此,您必须使用
%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']);

我怀疑你将需要专门的功能为用户信息了。但是,也可以这样做,基于此功能,我也遇到了非常类似的情况。 我制作了一个自定义函数来返回表中的值。 如果字段存在或不存在,还可以通过返回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' );
?>


请随意评论。

回显查询,查看他运行的内容,如果您有错误,请显示它们,回显mysql\u errno($link)。": " . mysql\u错误($link)。“\n”;sql错误为“无效表“””,因此,这不是您发布在此处的真实代码?@col.Shrapnel,现在是。我不认为这是问题所在。你不应该在函数中包含任何内容。而且您的解决方案很可能易受SQL攻击injection@Bandon如果您只需要选定字段,则优化查询(
中选择用户名、用户id)而不是获取方法。当他可以返回返回$datareturn的结果集时,为什么要创建一个新函数?这正是我试图做的。只需在一个通用函数中执行此操作,这样我就可以请求所需的行。太棒了,我想我的专用函数只是为了避免视图页面中的SQL查询,以保持更整洁。@Bandon在视图页面中避免SQL查询的想法是错误的。您的专用功能仍然属于业务逻辑,不应该也在视图中。只应将要显示的数据传递给视图,而不传递其他数据。
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' );
?>