2017-05-16 11 views
-1

私のregister.phpページで次のエラーメッセージが表示され続けます。私のホスティングプロバイダは、PHPのバージョンは、私が7.1から5.6まで、同じことを試してきたと言っています。以下は、表示され続けるエラーです。クラスをPDOStatementのMySQLへの接続に関する問題

オブジェクトは、ライン74

に/home/scylla97/public_html/register.phpにintに変換することができませんでしたregister.phpページに以下のコードを見てください。


  if ($securimage->check($_POST['captcha_code']) == false) { 
       echo '<font color="white">Wrong captcha :\ </font>'; 
     } 
     else { 
     $username = $_POST['username']; 
     $password = $_POST['password']; 
     $rpassword = $_POST['rpassword']; 
     $email = $_POST['email']; 
     $errors = array(); 
     $checkUsername = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `username` = :username"); 
     $checkUsername -> execute(array(':username' => $username)); 
     $countUsername = $checkUsername -> fetchColumn(0); 
     if ($checkUsername > 0) 
     { 
      $errors['<font color="white">Username is already taken</font>']; 
     } 
     if (!ctype_alnum($username) || strlen($username) < 4 || strlen($username) > 15) 
     { 
      $errors[] = '<font color="white">Username Must Be Alphanumberic And 4-15 characters in length</font>'; 
     } 
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) 
     { 
      $errors[] = '<font color="white">Email is invalid</font>'; 
     } 
     if (empty($username) || empty($password) || empty($rpassword) || empty($email)) 
     { 
      $errors[] = '<font color="white">Please fill in all fields</font>'; 
     } 
     if ($password != $rpassword) 
     { 
      $errors[] = '<font color="white">Passwords do not match</font>'; 
     } 
     if (empty($errors)) 
     { 
      try{ 
      $insertUser = $odb -> prepare("INSERT INTO `users` VALUES(NULL, :username, :password, :email, 0, 0, 0, 0)"); 
      $insertUser -> execute(array(':username' => $username, ':password' => SHA1($password), ':email' => $email)); 
      } 
      catch(PDOException $exception){ 
       return $exception->getMessage(); 
      } 
      echo '<div class="nNote nSuccess hideit"><p><strong><font color="white">SUCCESS: </font></strong><font color="white">User has been registered. Redirecting....</font></p></div><meta http-equiv="refresh" content="3;url=login.php">'; 
     } 
     else 
     { 
      echo '<div class="nNote nFailure hideit"><p><strong>ERROR:</strong><br />'; 
      foreach($errors as $error) 
      { 
       echo '-'.$error.'<br />'; 
      } 
      echo '</div>'; 
     } 
    } 
    } 
    ?> 

は本当にあなたの助け:)

+0

line 74はどこですか? – nerdlyist

+1

'phpMyAdmin'は、MySQLデータベースを管理するためのPHPで書かれたツールです。これはデータベースではないので、接続しないでください – RiggsFolly

+0

これは2017です。これをしないでください。 'SHA1($ password)' – Akintunde007

答えて

0
$checkUsername = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `username` = :username"); 
     $checkUsername -> execute(array(':username' => $username));//OOP 101 suggests that $checkUsername gets all functions/methods contained via the `$odb` variable 

$countUsername = $checkUsername -> fetchColumn(0);// use this variable in your if statements. 

$checkUsernameは単にあるstatement.Itがcount

変更を確認するために、独自に使用することはできませんをお願い申し上げあなた条件を満たす場合

if ($countUsername > 0) 
     { 
      $errors['<font color="white">Username is already taken</font>']; 
     } 
+0

ありがとう、それを修正しました:) – user3657631

+0

Pleasure @ user3657631 – Akintunde007

0

あなたは整数でPDOStatement$checkUsernameを比較している(それはだ場合チェクこの場合には0より大きい)実際には、行の数はあなたがあなたのコードを変更する必要があるので、$countUsernameに格納されている間:

if ($countUsername> 0) 
    { 
     $errors['<font color="white">Username is already taken</font>']; 
    } 

Obs:コメントは受け付けていません

関連する問題