2011-07-31 10 views
0

こんにちは私はPHPのMySQL開発に新しいです。私はWindows上でWAMPサーバーを使用しています。 php5.3.4、mysql5.1、apache2.2。私はこのコードを実行しようとしますが、私が得るのはerror.phpページだけです。テーブルにauto_increment idsがある場合、mysqlに挿入する特別な方法はありますか?コードでは、idにNULL値を与えます。初心者のPHP MySQLの質問

お手数ですが、ご質問ください。

function addMember($firstname, $lastname, $email, $password, $bday, $gender, $maritalStatus, $education, $occupation) { 
    $personalQ = "INSERT INTO users_personal_profile VALUES(NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 
    if($stmt3 = $this->conn->prepare($personalQ)) { 
     $stmt3->bind_param('sssssssss', $firstname, $lastname, $email, $password, $bday, $gender, $education, $occupation, $maritalStatus); 
     $stmt3->execute(); 
     if($stmt3->fetch()) { 
      $stmt3->close(); 
      header("location: intermediate.php"); 
     } 
     else { 
      $stmt3->close(); 
      header("location: error.php"); 
     } 
    } 
} 
+0

とそれにアクセスすることができますメッセージは..何らかの種類のフレームワークを使用しているように見えます。 – Sudantha

+3

['mysqli_stmt :: fetch'](http://php.net/manual/en/mysqli-stmt.fetch.php)は通常選択クエリ用です。インデックスクエリを持つ。コンテキストで意味のある関数だけを使用してください。代わりに 'execute'が何を返すかを確認してください。 – hakre

+0

'INSERT'の' fetch'は何を返すべきですか?私はMySQLが 'INSERT'から' RETURNING'をサポートしていないと思うので、 'if($ stmt3-> fetch())'をテストすると常にfalseと評価されますか? (hakreが言ったように) –

答えて

1

凝縮コメント:

は、あなたのスクリプトを適応させる可能性が起こっているのかを確認するには、次の

function addMember($firstname, $lastname, $email, $password, $bday, $gender, $maritalStatus, $education, $occupation) { 
    $personalQ = "INSERT INTO users_personal_profile VALUES(NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 
    if($stmt3 = $this->conn->prepare($personalQ)) { 
     $stmt3->bind_param('sssssssss', $firstname, $lastname, $email, $password, $bday, $gender, $education, $occupation, $maritalStatus); 

     if($stmt3->execute()){ 
      $stmt3->close(); 
      header("location: intermediate.php"); 
     } 
     else { 
      echo $stmt3->error; 
      // header("location: error.php"); // can't output headers after outputting something, but it's just for debugging 
     } 
    } 
} 

が、実際のエラーであるとそれが言う場合にあなたにいくつかの洞察を取得する必要があります。

データベースのスキームにautoincrement-fieldを設定する必要があります。テーブルはどのように定義されていますか?最初のフィールドは実際にオートインクリメントとしてマークされていますか? (そうであれば、nullが機能するはずです) また、データベースに直接問合せを実行して、その動作を確認することもできます。あなたは、コードに自動インクリメント値を必要とする場合(あなたはそのためにコンソールからのphpMyAdminまたはNavicatのか、SQLを使用することができます。)

を、あなたは `mysql_error()を`を使用してエラーをチェックし$mysqli_stmt->insert_id;

+0

それはうまくいきました! fetchステートメントを完全に削除しました! Thanksa lot Inca ..あなたは私の救い主です.. – Ari53nN3o

関連する問題