在某些用户定义的函数中执行mysqli_query后出错

时间:2013-03-16 23:52:39

标签: php mysqli

带有一个方法getField的 getUserName.php 文件的内容:

<?php
function getfield($field)
{
if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id']))
    {
    $query="SELECT `$field` FROM `user` WHERE `id`='".$_SESSION['user_id']."'";
    if($query_run=mysqli_query($conn,$query))
    {
      if($query_result=mysqli_fetch_field($query_run))
       {
        return $query_result;
       }
     } else {
        printf("error: %s\n", mysqli_error($conn));
        }       
}  
?>

index.php 的内容,其中包含 connection.php ,其中包含 $ conn 对象&amp; getUserName.php

<?php 
include_once('connection.php');
include_once('function.php');
$fname=getfield('Fname');
$lname=getfield('Lname');

echo $name=$fname.' '.$lname;
?>  

执行后,我收到如下错误消息:

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/confessi/public_html/college/profile/function.php on line 8

有什么想法吗?为什么我收到错误?任何帮助,将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:1)

$conn未在getfield($field)的本地范围内定义。你需要以参数形式发送它:

$fname=getfield($conn, 'Fname');
$lname=getfield($conn, 'Lname');

function getfield($conn, $field) {
    ...

答案 1 :(得分:1)

$conn函数范围内无法使用变量getfield

在函数内声明全局应该可以解决问题:

<?php
function getfield($field)
{
    global $conn;

    if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id']))
    {
        $query="SELECT `$field` FROM `user` WHERE `id`='".$_SESSION['user_id']."'";
        if($query_run=mysqli_query($conn,$query))
        {
            if($query_result=mysqli_fetch_field($query_run))
            {
                return $query_result;
            }
        }
        else
        {
            printf("error: %s\n", mysqli_error($conn));
        }       
    }  
}
?>