【问题标题】:I can't insert more than 7 columns in php prepare statement我不能在 php prepare 语句中插入超过 7 列
【发布时间】: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


【解决方案1】:

再添加 1 个?作为其中的值,或者如果 id no 是自动的,则将其从插入语句中删除

【讨论】:

  • teacher_id 不是自动增量,它只是为上述查询插入,但是当我添加一个或多个时?并在其中准备返回 false 的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 2017-01-09
  • 1970-01-01
  • 2014-12-14
  • 2012-08-05
  • 1970-01-01
相关资源
最近更新 更多