PHP:无法在函数的Scope中访问$ db变量

时间:2014-10-19 06:40:33

标签: php scope

我已经创建了一个函数来检查记录是否存在,但它给了我这些错误:

注意:未定义的变量:第31行的D:\ wamp \ www \ Whq \ admin_operation.php中的db

致命错误:在第31行的D:\ wamp \ www \ Whq \ admin_operation.php中调用非对象的成员函数query()

if($mode=='add_image')  
{    $tags_array = array();
     $tags = $_POST['tags'];

    /*function to check tag exist or not */
     function check_tag_exist($t)
     {  
       $result = $db->query('select tag_name from whq_tags where tag_name like "'.$t.'" ');
       $no=$result->num_rows;
       if($no==0)   
       { 
         return true;
       }
       else
       {
         return false;
       }

    }
    /* prepared stmnt created for whq_tags table */
    if($stmt = $db->prepare('insert into whq_tags(tag_name) values (?)'))
    {

       $stmt -> bind_param('s', $tags_name);

       foreach($tags as $tag1)
       {
            $tag1 = $tags_name;

            if(check_tag_exist($tags_name))
            {
              $db->execute();
            }
        }   

       /* Close the statement */
        $stmt->close();

    } 
    else 
    {
      /* Error */
      printf("Prepared Statement Error: %s\n", $db->error);
    }
}

check_tag_exist函数中的变量$ db不起作用,而它在其他地方工作。请帮帮我。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

由于范围可变,您的函数无法访问该变量。

从PHP文档中阅读variable scope

您可以将$ db变量作为参数传递给函数:

function check_tag_exist($t, $db) { ... }