2016-04-29 4 views
0

Imはphpに新規、mysqlとiveはphpmyadminで登録システムを作っています。私のメンバーが追加したページは別として、すべて正常に動作します。 phpmyadminでデータを追加すると、get user infoページに表示されますが、メンバーの追加ページにデータを追加しようとすると、2つのエラーが発生します。ここで彼らは、次のとおりです。phpおよびmysql登録コードのエラー。 (学校の仕事のため)

警告:mysqli_stmt_bind_param():タイプ定義文字列内の要素の数は、Cでのバインド変数の数と一致しません:\ xamppの\ htdocsに\ memberadded.phpライン56上の

エラー発生した

警告:mysqli_error()が期待する正確に1つのパラメータ、0 Cで与えられた:\ xamppの\ htdocsに\ memberadded.phpはライン上で73

以下

私のメンバーがページを追加するとは、エラーが予定されています。あなたが私を助けることができれば、それを本当に感謝するでしょう。

 <html> 
    <head> 

    <title>Add Student</title> 
    </head> 
    <body> 
    <?php 

    if(isset($_POST['submit'])){ 

    $data_missing = array(); 

    if(empty($_POST['username'])){ 

     // Adds name to array 
     $data_missing[] = 'Username'; 

    } else { 

     // Trim white space from the name and store the name 
     $username = trim($_POST['username']); 

    } 

    if(empty($_POST['password'])){ 

     // Adds name to array 
     $data_missing[] = 'Password'; 

    } else{ 

     // Trim white space from the name and store the name 
     $password = trim($_POST['password']); 

    } 

     if(empty($_POST['email'])){ 

     // Adds name to array 
     $data_missing[] = 'Email'; 

    } else { 

     // Trim white space from the name and store the name 
     $email = trim($_POST['email']); 

    } 

    if(empty($data_missing)){ 

     require_once('../mysqli_connect.php'); 

     $query = "INSERT INTO members (username, password, email) VALUES (?, ?, ?)"; 

     $stmt = mysqli_prepare($dbc, $query); 

     mysqli_stmt_bind_param($stmt, "ss", $username, $password, $email); 

     mysqli_stmt_execute($stmt); 

     $affected_rows = mysqli_stmt_affected_rows($stmt); 

     if($affected_rows == 1){ 

      echo 'User Entered'; 

      mysqli_stmt_close($stmt); 

      mysqli_close($dbc); 

     } else { 

      echo 'Error Occurred <br />'; 
      echo mysqli_error(); 

      mysqli_stmt_close($stmt); 

      mysqli_close($dbc); 

     } 

    } else { 

     echo 'You need to enter the following data<br />'; 

     foreach($data_missing as $missing){ 

      echo "$missing<br />"; 

     } 

    } 

} 

?> 

<form action="http://localhost/memberadded.php" method="post"> 

    <b>Add a New User</b> 

<p>Username: 
<input type="text" name="username" size="30" value="" /> 
</p> 

<p>Password: 
<input type="password" name="password" size="30" value="" /> 
</p> 

<p>Email: 
<input type="text" name="email" size="30" value="" /> 
</p> 

<p> 
    <input type="submit" name="submit" value="Send" /> 
</p> 

</form> 
</body> 
</html> 
+1

**パスワードのセキュリティを処理するには、PHPの[組み込み関数](http://jayblanchard.net/proper_password_hashing_with_PHP.html)を使用してください。 5.5より小さいPHPバージョンを使用している場合、 'password_hash()' [互換パック](https://github.com/ircmaxell/password_compat)を使用することができます。ハッシュする前に[パスワードを逃さないでください](http://stackoverflow.com/q/36628418/1011527)、または他のクレンジングメカニズムを使用していることを確認してください。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –

+1

まず、 '' ss "'があり、 '' sss "'があるはずです。挿入する3つの変数それぞれに1つ –

+0

'mysqli_error()'には接続リンクが必要です。私はリンクが '$ dbc'だと推測していますので、mysqli_error($ dbc)は正しい使い方です。 –

答えて

0

ファイル:mysqli_connect.phpは、mysqli_connect()要素を返す必要があります。 docsを見て:

$ DBC = mysqli_connect( "127.0.0.1"、 "ユーザー"、 "パスワード"、 "MYDB")。

があるのparamsとして3つの文字列であるので、mysqli_stmt_bind_param方法で"sss"代わりの"ss"を設定します。 mysqli db接続を返すようにファイルを修正し、コードを追加してください:

$dbc=require_once('../mysqli_connect.php'); 
... 

... 
if(empty($data_missing)){ 
    ... 
    mysqli_stmt_bind_param($stmt, "sss", $username, $password, $email); 
    ... 
} else { 

    echo 'Error Occurred <br />'; 
    echo mysqli_error($dbc); // Here 

    mysqli_stmt_close($stmt); 
    mysqli_close($dbc); // as it is here 
} 

警告を解決するはずです。

+1

OPがOKに接続しているようですが、そうでなければエラーは表示されません。最初の警告は[ここで解決されました](http://stackoverflow.com/questions/36947417/errors-in-php-and-mysql-registration-code-for-school-work#comment61453526_36947417)。 2番目は[ここで解決しました](http://stackoverflow.com/questions/36947417/errors-in-php-and-mysql-registration-code-for-school-work#comment61453548_36947417)。 –

+0

接続が正常に動作していない場合は、 – Kruser

+0

@Karlosが助けてくれてありがとうございます。しかし、誰かがあなたの時間を教えてください私にそれを説明することができますpassword_hash()に組み込まれてについて述べた – PokeSteelProductions

関連する問題