【发布时间】:2021-04-21 21:57:44
【问题描述】:
此代码完美运行,但是当我添加一列或多列 prepare 返回 null 并且无法插入数据库时
public function createTeacher($teacher_id,$fname,$mname,$lname,$mobile_number,$email,$CGPA,$password,$qualification,$gender)
{
if($this->isTeacherExist($teacher_id,$mobile_number,$email))
{
return 0;
}
else
{
$password=md5($password);
$stmt =$this->con->prepare( "INSERT INTO `tbl_teacher_registration` (`teacher_id`, `fname`, `mname`,`lname`,`mobile_number`,`email`,`password` )VALUES (?,?,?,?,?,?,?);");
if($stmt===false)
{
die('prepare() failed: '.htmlspecialchars($this->con->error));
}
else
{
$stmt->bind_param("ssssiss",$teacher_id,$fname,$mname,$lname,$mobile_number,$email,$password );
}
if($stmt->execute())
{
$stmt->close();
return 1;
}
else
{
return 2;
}
}
}
我花了一天时间寻找解决方案,欢迎任何答案 感谢您的帮助!除了添加新列之外,一切正常,我希望以相同的方式获得新的列限定
【问题讨论】:
-
请贴出完整的代码集(包括bind_param部分等)
-
准备好的语句没有理由不接受超过 7 个输入参数 - 也许如果您要显示表模式并显示失败的语句示例(带有额外的列和占位符)。
-
您似乎将行与列混淆了..
-
请显示导致失败的代码。此外,
md5不应用于散列,php.net/manual/en/function.password-hash.php -
请不要自己滚动密码哈希,特别是不要使用
MD5()或SHA1()。 PHP 提供了password_hash()和password_verify(),为了您的用户的安全,请使用它们。
标签: php mysql mysqli prepared-statement