PHP mysqli预处理语句块根本不执行

时间:2016-08-25 20:31:12

标签: php mysqli

我正在开发一个用于codeigniter应用程序的Web安装脚本。它是一个文件中的ajax驱动。到目前为止,它成功导入数据库,将数据库配置写入config / database.php并更新config / config.php。

但是,在导入数据库之后,我必须添加一个管理员用户,并且执行此操作的块由于某种原因从未执行。没有错误,我已经将它从try catch块中删除,看看是否有任何问题。有人能看到我在这里看不到的东西吗?

页面很长,所以我只想粘贴我认为重要的功能:

try {
   $db = @new mysqli($host, $user, $dbpwd, $dbname);
   if($db->connect_errno > 0){
    $errmsg='Unable to connect to database.';
      }
    else{//connected
          if(import($db)){
          //installed successfully. Create user now
         //the user is not created and no error is generated at all.
          $statement = $db->prepare("INSERT INTO tblusers  (adminfullname,adminemail,adminpwd,confirmed,admintype) VALUES(?,?,?,?,?)");
        $newpass=password_hash($pass, PASSWORD_DEFAULT);
        $adminName='Admin';
        $confirm=1;
        $admintype=1;
        $statement->bind_param('sssii', $adminName,$email,$newpass,$confirm,$admintype);
          $statement->execute();
        $errmsg=true;//no error
          }
          }
       $db->close();
       echo $errmsg;//back to the calling ajax   
      }

导入功能从SO复制并直接使用:

   function import($db){
    $query=file_get_contents('db.sql');
   try{
  if (@$db->multi_query($query)) {
     do {
    /* store first result set */
    if ($result = @$db->store_result()) {
        while ($row = @$result->fetch_row()) {

        }
        @$result->free();
    }
    /* print divider */

      } while (@$db->next_result());
     }
     return true;
   }
     catch (Exception $e){
     return false;
   }

 //end function
 }

0 个答案:

没有答案