首页 文章

致命错误:在[重复]中调用boolean上的成员函数bind_param()

提问于
浏览
0

这个问题在这里已有答案:

Code

if(isset($_POST['create'])){
    $fname      = trim($_POST['fname']);
    $lname      = trim($_POST['lname']);
    $ftname         = trim($_POST['ftname']);
    $mtname         = trim($_POST['mtname']);
    $date_of_admission = trim($_POST['date_of_admission']);
    $date_of_birth = trim($_POST['date_of_birth']);
    $photo_location         = trim($_POST['photo_location']);
    $address        = trim($_POST['address']);
    $phone      = trim($_POST['phone']);
    $sex    = trim($_POST['sex']);
    $nationality    = trim($_POST['nationality']);
    $religion   = trim($_POST['religion']); 

    if(empty($fname) && empty($lname) &&empty($ftname) &&empty($mtname) &&empty($date_of_admission) && empty($phone) && empty($sex)){
        $error = "You must fill all fields.";
    }else{
        $insert = $db->prepare("INSERT INTO st_info (fname,  lname,  ftname,  mtname,  date_of_birth,  date_of_admission,  photo_location, address, phone, sex, nationality, religion,joined) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())");
        $insert->bind_param('sssssssssddd',$fname,$lname,$ftname,$mtname,$date_of_birth,$date_of_admission,$photo_location,$address,$phone,$sex,$nationality,$religion);
        if($insert->execute()){
            //$success = "st_info added successfully!";
            header("location:index.php");
        }
    }
}

Error

致命错误:在第26行的C:\ xampp \ htdocs \ create.php中调用boolean上的成员函数bind_param()

3 回答

  • 0

    看起来像$ db-> prepare()返回一个布尔值而不是一个对象 . 试试吧?

    if(isset($_POST['create'])){
        $fname      = trim($_POST['fname']);
        $lname      = trim($_POST['lname']);
        $ftname         = trim($_POST['ftname']);
        $mtname         = trim($_POST['mtname']);
        $date_of_admission = trim($_POST['date_of_admission']);
        $date_of_birth = trim($_POST['date_of_birth']);
        $photo_location         = trim($_POST['photo_location']);
        $address        = trim($_POST['address']);
        $phone      = trim($_POST['phone']);
        $sex    = trim($_POST['sex']);
        $nationality    = trim($_POST['nationality']);
        $religion   = trim($_POST['religion']);
    
    
        if(empty($fname) && empty($lname) &&empty($ftname) &&empty($mtname) &&empty($date_of_admission) && empty($phone) && empty($sex)){
            $error = "You must fill all fields.";
        }else{
            $db->prepare("INSERT INTO st_info (fname,  lname,  ftname,  mtname,  date_of_birth,  date_of_admission,  photo_location, address, phone, sex, nationality, religion,joined) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())");
            $db->bind_param('sssssssssddd',$fname,$lname,$ftname,$mtname,$date_of_birth,$date_of_admission,$photo_location,$address,$phone,$sex,$nationality,$religion);
            if($db->execute()){
                //$success = "st_info added successfully!";
                header("location:index.php");
            }
    
        }
    }
    
  • 0

    看来你的prepare语句失败了(否则它会返回一个PDOStatement而不是一个布尔值)

    您应该使用 $db->errorInfo()$db->errorCode() 来获取错误的原因 .

    原因可能是,您的语句中有一些字段,这些字段不存在,或者您将它们命名为错误 .

  • 0

    准备好的语句中最常见的失败之一是连接编码..试试

    $mysqli->set_charset("utf8");
    

    $mysqli = new mysqli("host", "user", "pass", "db");
    

相关问题