我的查询返回了一个错误
致命错误:调用布尔值上的成员函数bind_param()。。。
尽管我只是在表列中插入字符串,而这些列需要字符串值::INSERT
我的桌子是这样的:
+---------------+--------------+-----+------+---+--+--+
| id | int(11) | NO | PRI | | | |
| username | varchar(45) | YES | UNI | | | |
| email_address | varchar(45) | YES | UNI | | | |
| password | varchar(255) | YES | | | | |
| role | int(11) | YES | NULL | 0 | | |
| dashboard_id | int(11) | YES | NULL | | | |
+---------------+--------------+-----+------+---+--+--+
我的Php看起来像这样。。。
$stmt = $conn->prepare("INSERT INTO users VALUES (?, ?, ?)");
$stmt->bind_param('sss', $username, $emailAddress, $upassword);
$username = $_POST['username'];
$emailAddress = $_POST['email'];
$upassword = password_hash($_POST['upassword'], PASSWORD_DEFAULT);
$stmt->execute();
printf("%d Row inserted.\n", $stmt->affected_rows);
$stmt->close();
$conn->close();
更新
我的连接代码:
$conn = new mysqli($db_host,$db_user,$db_password,$db_name);
最佳答案
这在我的本地端工作:-
表格结构:-
Name Type Null Default Extra
id int(11) No None AUTO_INCREMENT Primary Key
user_name varchar(256) No None
email_address varchar(256) No None
password varchar(256) No None
role int(11) Yes 0
dashboard_id int(11) Yes 0
Php代码:-
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
$conn = new mysqli('*****','***','****','****');
$conn->set_charset("utf8");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$_POST['username'] = 'anant'; // i have hard coded for checking
$_POST['email'] = 'anant@gmail.in';// i have hard coded for checking
$_POST['upassword'] = 'anant@123';// i have hard coded for checking
if(!empty(trim($_POST['username'])) && !empty(trim($_POST['email'])) && !empty(trim($_POST['upassword']))){
$username = $_POST['username'];
$emailAddress = $_POST['email'];
$upassword = password_hash($_POST['upassword'], PASSWORD_DEFAULT);
if($stmt = $conn->prepare("INSERT INTO users (user_name,email_address,password) VALUES (?, ?, ?)")){
$stmt->bind_param('sss', $username, $emailAddress, $upassword);
$stmt->execute();
$stmt->close();
}else{
echo $conn->error;
}
$conn->close();
}else{
echo "form values are not coming";
}
?>
注:-
我有个问题,就是不能在
prepare()
中提供列名。当我这样做的时候,我得到了这个错误。所以当我提供相应的列名时一切都很好,并开始工作。
希望有帮助。
关于php - 插入致命错误函数bind_param(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42248221/