这是我写的连接数据库的函数:
function db_connect(){
@$db=new mysqli("localhost","root","","trade");
if(mysqli_connect_errno()){
echo "数据库连接错误";
exit;
}
$db->query("set names 'utf8'");
//echo "连接数据库成功";
}这里是调用的代码:
43    <?php
44     db_connect();
45 $sql="select b_class,id from p_class where b_id='0' order by b_index asc";
46 $result=$db->query($sql);
47 while($row=$result->fetch_assoc()){
48 echo "<li>".$row['b_class']."</li>";这个是错误信息:
Notice: Undefined variable: db in D:\wamp\www\trade\index.php on line 46Fatal error: Call to a member function query() on a non-object in D:\wamp\www\trade\index.php on line 46这到底是咋回事呢?

解决方案 »

  1.   

    PHPer要学会看出错提示和debug调试你那个是没有数据库对象没有成功@$db=new mysqli("localhost","root","","trade");这个只有函数内有作用域,函数外就没有了应该把它放在函数之外,或gobal声明它
      

  2.   

    function db_connect(){
    global $db;
    $db=new mysqli("localhost","root","","trade");
    if(mysqli_connect_errno()){
    echo "数据库连接错误";
    exit;
    }
    $db->query("set names 'utf8'");
    //echo "连接数据库成功";
    }这里是调用的代码:
    43 <?php
    $db=null;
    44 db_connect();
    45 $sql="select b_class,id from p_class where b_id='0' order by b_index asc";
    46 $result=$db->query($sql);
    47 while($row=$result->fetch_assoc()){
    48 echo "<li>".$row['b_class']."</li>";
      

  3.   

    function db_connect(){
    @$db=new mysqli("localhost","root","","trade");
    if(mysqli_connect_errno()){
    echo "数据库连接错误";
    exit;
    }
    $db->query("set names 'utf8'");
    //echo "连接数据库成功";
    return $db;
    }$db = db_connect();
      

  4.   

    使用 return 就行了。很明显的  db 对象不存在,更同有 query 方法。
      

  5.   

    $db = null;
    function db_connect(){
    @$db=new mysqli("localhost","root","","trade");
    if(mysqli_connect_errno()){
    echo "数据库连接错误";
    exit;
    }
    $db->query("set names 'utf8'");
    //echo "连接数据库成功";
    }
    要在外面声明下$db
      

  6.   

    是的,脑子一时糊涂了,后来用了return $db;的方式,谢谢。