代码
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");
}
}
}
错误
致命错误:在布尔值中调用成员函数bind_param() 第26行的C:\ xampp \ htdocs \ create.php
答案 0 :(得分: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");
}
}
}
答案 1 :(得分:0)
看来你的prepare语句失败了(否则它会返回一个PDOStatement而不是一个布尔值)
您应该使用$db->errorInfo()
和$db->errorCode()
来了解错误原因。
原因可能是,您的陈述中有一些字段,它们不存在,或者您将它们命名为错误。
答案 2 :(得分:0)
准备语句中最常见的失败之一是连接编码..尝试
$mysqli->set_charset("utf8");
后
$mysqli = new mysqli("host", "user", "pass", "db");