2015-10-14 60 views
0

它的奇怪,下面的代碼用於很好地工作。運行相同的代碼後,它會運行但不會進入數據庫。用戶名,密碼,數據庫名稱等都是正確的,PDO擴展存在並在PHP中啓用(如我在phpinfo中檢查)。甚至在phpmyadmin檢查特權,在本地主機上獲得所有PRIVILEGES.Code始終返回false,沒有警告,通知或錯誤。可能是什麼原因?數據庫項沒有發生任何警告或錯誤從php

規範新用戶註冊:

$randomSalt = base64_encode(mcrypt_create_iv(PBKDF2_SALT_BYTE_SIZE, MCRYPT_DEV_URANDOM)); 
     $saltedPass = base64_encode($this->pbkdf2(PBKDF2_HASH_ALGORITHM, 
         $password, 
         $randomSalt, 
         PBKDF2_ITERATIONS, 
         PBKDF2_HASH_BYTE_SIZE, 
         true 
        )); 

     $id = $this->NewGuid(); 

     $sql = $this->dbh->prepare("INSERT INTO `{$this->dbtable}` (`id`, `username`, `password`, `password_salt`, `created`) VALUES(:id, :username, :password, :passwordSalt, NOW())"); 
     /* Bind the default values */ 
     $sql->bindValue(":id", $id); 
     $sql->bindValue(":username", $mail); 
     $sql->bindValue(":password", $saltedPass); 
     $sql->bindValue(":passwordSalt", $randomSalt); 
     //$sql->bindValue(":created", UNIX_TIMESTAMP(now())); 
     if($sql->execute()) 
     { 
      $_SESSION['logSyscuruser'] = $id; 
      setcookie("logSyslogin", hash("sha256", $this->secureKey.$id.$this->secureKey), time()+3600*99*500, "/"); 

      return true; 
     } 
     else 
     { 
      return false; 
     } 
+2

您是否在PHP中打開了警告和錯誤消息? –

+0

在這個代碼塊之上的某個點,你是否正在初始化PDO對象(即'$ this-> dbh = new PDO(...);'... – War10ck

+0

...並且因爲你沒有顯式的錯誤處理程序在此代碼片段中:是否將錯誤模式設置爲[PDO :: ERRMODE_EXCEPTION](http://docs.php.net/manual/en/pdo.constants.php#pdo.constants.errmode-exception)? – VolkerK

回答

-2

在我的情況發生,由於內存限制的問題。我的代碼在本地主機上工作,但沒有在現場服務器上工作。我增加了內存限制和所有作品完美。

在您的php.ini文件中添加以下代碼並將其上傳到根目錄。

memory_limit = -1;

希望這對你有所幫助。

+1

這是一個非常糟糕的建議,首先,你根本沒有任何理由認爲這有任何解決這個問題的機會。甚至沒有一點OP提供的錯誤信息;其次,遵循你的建議會打開PHP環境,使其能夠基本鎖定失控進程您的服務器,因爲PHP不再遏制內存使用。如果您的應用程序有內存問題,您應該確定根本原因並解決它,不要讓您的問題潛在地關閉服務器,因爲不是修復您的移除約束 –