0

私はPHPとMysqlを試しています。xamppを使用してmulocalhostにデータベースとテーブルを作成しました。クエリを実行してテーブルにデータを入力することを想定したファイルも作成しましたが、奇妙なことに、エラーは発生しませんが、同時にデータベースにDATAが挿入されていません。

コード:

register.php:

<?php

session_start();

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

    include('connectDB.php');

    $UserN = $_POST['username'];
    $Upass = $_POST['password'];
    $Ufn = $_POST['first_name'];
    $Uln = $_POST['last_name'];
    $Uemail = $_POST['email'];

    $NewAccountQuery = "INSERT INTO users (user_id,username, password, first_name, last_name, emial) VALUES ('$UserN','$Upass', '$Ufn', '$Uln', '$Uemail')";

    if(!mysql_query($NewAccountQuery)){

        die(mysql_error());

    }//end of nested if statment


    $newrecord = "1 record added to the database";

}//end of if statment

?>



<html>
<head>

<title>Home Page</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>

    <div id="wrapper">
        <header><h1>E-Shop</h1></header>


        <article>
        <h1>Welcome</h1>

            <h1>Create Account</h1>

        <div id="login">

                <ul id="login">

                <form method="post" action="register.php"  >
                    <fieldset>  
                        <legend>Fill in the form</legend>

                        <label>Select Username : <input type="text" name="username" /></label>
                        <label>Password : <input type="password" name="password" /></label>
                        <label>Enter First Name : <input type="text" name="first_name" /></label>
                        <label>Enter Last Name : <input type="text" name="last_name" /></label>
                        <label>Enter E-mail Address: <input type="text" name="email" /></label>
                    </fieldset>
                        <br />

                        <input type="submit" submit="submit" value="Create Account" class="button">

                </form>




                </div>
            <form action="index.php" method="post">
            <div id="login">
                <ul id="login">
                    <li>
                        <input type="submit" value="Cancel" onclick="index.php" class="button"> 
                    </li>
                </ul>
            </div>      



        </article>
<aside>
</aside>

<div id="footer">This is my site i Made coppyrights 2013 Tomazi</div>
</div>

</body>
</html>

connectDBというインクルードファイルも1つあります。

 <?php


    session_start();

        $con = mysql_connect("127.0.0.1", "root", "");
        if(!$con)
            die('Could not connect: ' . mysql_error());

        mysql_select_db("eshop", $con) or die("Cannot select DB");

?>

データベース構造:

データベース名:eショップ; DB内の1つのテーブルのみ:ユーザー;

usersテーブルは次のもので構成されます。

user_id: A_I , PK
username
password
first_name
last_name
email

私はこれを解決するためにかなりの時間を費やして調査を行い、いくつかのチュートリアルを見ましたが、運がありませんでした

誰かが私の問題の根源を見つけることができますか...?

4

4 に答える 4

2

なぜならif(isset($_POST['submitted'])){

submitted送信ボタンに名前を付ける名前の入力フィールドがありませんsubmitted

<input name="submitted" type="submit" submit="submit" value="Create Account" class="button">

値よりも多くのフィールドがある挿入クエリを確認してください

変化 :

$NewAccountQuery = "INSERT INTO users (user_id,username, password, first_name, last_name, email) VALUES ('$UserN','$Upass', '$Ufn', '$Uln', '$Uemail')";

に :

$NewAccountQuery = "INSERT INTO users (user_id,username, password, first_name, last_name, email) VALUES ('','$UserN','$Upass', '$Ufn', '$Uln', '$Uemail')";

考慮事項user_idは自動インクリメント フィールドです。

あなたemailのクエリは間違って と書かれていemialます。

于 2013-02-27T13:06:37.817 に答える
0

エラー報告はオンになっていますか? これを画面の上部に配置します。

error_reporting(E_ALL);
ini_set('display_errors', '1');
于 2013-02-27T13:09:57.137 に答える
0

上記のいくつかの良い答えですが、古い 2002 MySQL API の代わりに新しい MySQLi / PDO を使用することもお勧めします。

いくつかの例:(元の例を手続き型コードで書いたので、mysqliを使用します)

connectDB.php

<?php
$db = mysqli_connect('host', 'user', 'password', 'database');

if (mysqli_connect_errno())
     die(mysqli_connect_error());
?>

register.php -- サンプルの php 部分を書き出すだけで、あとはあなたにお任せします

<?php
//i'll always check if session was already started, if it was then 
//there is no need to start it again
if (!isset($_SESSION)) {
  session_start();
}

//no need to include again if it was already included before
include_once('connectDB.php'); 

//get all posted values
$username = $_POST['username'];
$userpass = $_POST['password'];
$usermail = $_POST['usermail'];
//and some more

//run checks here for if fields are empty etc?
//example check if username was empty
if($username == NULL) {
  echo 'No username entered, try <a href="register.php">again</a>';
  mysqli_close($db);
  exit();
} else {
  //if username field is filled we will insert values into $db
  //build query
  $sql_query_string = "INSERT INTO _tablename_(username,userpassword,useremail) VALUES('$username','$userpass','$usermail')";
  if(mysqli_query($db,$sql_query_string)) {
    echo 'Record was entered into DB successfully';
    mysqli_close($db);
  } else {
    echo 'Ooops - something went wrong.';
    mysqli_close($db);
  }
}
?>

これは非常にうまく機能するはずです。追加する必要があるのは、投稿された適切な値と、それを投稿するためのフォームを作成することだけです。それだけです。

于 2013-02-27T13:55:53.997 に答える