2017-05-28 179 views
0

HI即時通訊使用php和mysql構建在線奶製品。我試圖註冊,所以用戶信息可以存儲到數據庫中,但我有這樣的錯誤消息:「注意:未定義的變量:錯誤在C:\ wamp64 \ www \乳製品\ index.php 85行」 l dont知道如何解決這個問題。請升需要幫助...將數據插入到mysql數據庫(php,mysql)

這是代碼:

<?php 

if (array_key_exists("submit", $_POST)) { 

    $connection = mysqli_connect("localhost","root","","dairy_database"); 

    if(mysqli_connect_error()) { 

    die ("There was an error connection to the database"); 
    } 

    $error = ""; 

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

     $error .= "An email address is required <br>"; 
    } 

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

     $error .= "A password is required <br>"; 
    } 

    if ($error != "") { 

     $error = "<p> There were error(s) in your form:</p>".$error; 
    } 
    else{ 

     $query = "SELECT Id FROM users WHERE email = '".mysqli_real_escape_string($connection, $_POST['email'])."' LIMIT 1"; 
     $result = mysqli_query($connection, $query); 

     if (mysqli_num_rows($result) > 0) { 

      $error = "That email address is already taken."; 
     } 
     else{ 

      $query = "INSERT INTO users ('email', 'password') VALUES ('".mysqli_real_escape_string($connection, $_POST['email'])."', '".mysqli_real_escape_string($connection, $_POST['password'])."')"; 

        if (mysqli_query($connection, $query)) { 

         $error = "<p>Could not sign you up, Please try again later.</p>"; 
        } 
        else{ 

         $query = "UPDATE users SET password = '".md5(md5(mysqli_insert_id($connection)).$_POST['password'])."' WHERE Id = ".mysqli_insert_id($connection)." LIMIT 1"; 

         mysqli_query($connection, $query); 

         echo "Sign up successful"; 
        } 

     } 
    } 
} 

?> 





<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width"> 
     <meta name="author" content="Bachir Amadou"> 
     <link href="https://fonts.googleapis.com/css?family=Abel|Comfortaa" rel="stylesheet"> 
     <link rel="stylesheet" href="../carousel/css/style.css" type="text/css"> 
     <link rel="stylesheet" href="coverflow/css/style.css"> 
     <title>Dairy</title> 
     <script src="https://code.jquery.com/jquery-3.2.1.min.js"> </script> 
     <script type="text/javascript" src=""></script> 
    </head> 
    <body> 
     <div id="wrapper"> 
      <div id="top"> 
       <img class="log-img" src="./img/notebook.png" alt="notebook"> 
       <h5>Online Dairy Management System</h5> 
       <h1>Web Base System</h1> 
      </div><!--END OF TOP--> 

      <div id="error"> <?php echo $error; ?></div> 

      <div id="signup"> 
       <form id="form-signup" method="post"> 

        <input type="email" class="user" name="email" placeholder="Email..." 
        required><br> 

        <input type="password" class="user" name="password" placeholder="Password" required><br> 


        <input type="submit" name="submit" class="sign-submit" value="Sign Up"> 

       </form> 
      </div><!--END OF LOG--> 

     </div><!--END OF WRAPPER--> 
    </body> 
    </html> 

回答

0

這是因爲變量$error的條件內聲明的。 您可以使用isset()函數來檢查變量是否設置。 一個替代解決方案是。

更改此行

<div id="error"> <?php echo $error; ?></div> 

這一點。

<?php if(isset($error)){ ?> <div id="error"> <?php echo $error; ?></div><?php } ?> 

OR

的條件之前聲明變量像

<?php 
     $error = ''; 
     if (array_key_exists("submit", $_POST)) { 


     ....STATEMENTS..... 

     } 
    ?> 

<div id="error"> <?php echo $error; ?></div> 

你也需要在插入你的病情陳述一些錯誤。 我已經更新了下面的查詢。

PHP

<?php 

$error = ""; // declare it here 
if (array_key_exists("submit", $_POST)) { 

    $connection = mysqli_connect("localhost","root","","dairy_database"); 

    if(mysqli_connect_error()) { 

    die ("There was an error connection to the database"); 
    } 

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

     $error .= "An email address is required <br>"; 
    } 

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

     $error .= "A password is required <br>"; 
    } 

    if ($error != "") { 

     $error = "<p> There were error(s) in your form:</p>".$error; 
    } 
    else{ 

     $query = "SELECT Id FROM users WHERE email = '".mysqli_real_escape_string($connection, $_POST['email'])."' LIMIT 1"; 
     $result = mysqli_query($connection, $query); 

     if (mysqli_num_rows($result) > 0) { 

      $error = "That email address is already taken."; 
     } 
     else{ 

      $query = "INSERT INTO `users` (`email`, `password`) VALUES ('".mysqli_real_escape_string($connection, $_POST['email'])."', '".md5(md5(mysqli_real_escape_string($connection, $_POST['password'])))."');"; 

        if (!mysqli_query($connection, $query)) { 

         $error = "<p>Could not sign you up, Please try again later.</p>"; 
        } 
        else{ 

         $query = "UPDATE `users` SET `password` = '".md5(md5(mysqli_insert_id($connection)).$_POST['password'])."' WHERE Id = ".mysqli_insert_id($connection)." LIMIT 1;"; 

         mysqli_query($connection, $query); 

         echo "Sign up successful"; 
        } 

     } 
    } 
} 

?> 

HTML

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width"> 
     <meta name="author" content="Bachir Amadou"> 
     <link href="https://fonts.googleapis.com/css?family=Abel|Comfortaa" rel="stylesheet"> 
     <link rel="stylesheet" href="../carousel/css/style.css" type="text/css"> 
     <link rel="stylesheet" href="coverflow/css/style.css"> 
     <title>Dairy</title> 
     <script src="https://code.jquery.com/jquery-3.2.1.min.js"> </script> 
     <script type="text/javascript" src=""></script> 
    </head> 
    <body> 
     <div id="wrapper"> 
      <div id="top"> 
       <img class="log-img" src="./img/notebook.png" alt="notebook"> 
       <h5>Online Dairy Management System</h5> 
       <h1>Web Base System</h1> 
      </div><!--END OF TOP--> 

      <div id="error"> <?php echo $error; ?></div> 

      <div id="signup"> 
       <form id="form-signup" method="post"> 
       <input type="email" class="user" name="email" placeholder="Email..." 
       required><br> 

       <input type="password" class="user" name="password" placeholder="Password" required><br> 


       <input type="submit" name="submit" class="sign-submit" value="Sign Up"> 

      </form> 
     </div><!--END OF LOG--> 

    </div><!--END OF WRAPPER--> 
</body> 

+0

你的建議OK L做了修改和錯誤消息已不存在,但即時通訊仍然無法將用戶數據存儲到數據庫中。當我嘗試註冊時,它會提供成功的註冊消息,但數據庫中沒有條目。 – Bachir

+0

您的插入查詢錯誤。我已經更新了我的答案。請檢查一下。 – AdhershMNair

-1

您所需要的,如果條件之前聲明錯誤變量。就像這樣:

<?php 

$error = ""; // declare it here 

if (array_key_exists("submit", $_POST)) { 

    $connection = mysqli_connect("localhost","root","","dairy_database"); 

    if(mysqli_connect_error()) { 

    die ("There was an error connection to the database"); 
    } 

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

     $error .= "An email address is required <br>"; 
    } 

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

     $error .= "A password is required <br>"; 
    } 

    if ($error != "") { 

     $error = "<p> There were error(s) in your form:</p>".$error; 
    } 
    else{ 

     $query = "SELECT Id FROM users WHERE email = '".mysqli_real_escape_string($connection, $_POST['email'])."' LIMIT 1"; 
     $result = mysqli_query($connection, $query); 

     if (mysqli_num_rows($result) > 0) { 

      $error = "That email address is already taken."; 
     } 
     else{ 

      $query = "INSERT INTO users ('email', 'password') VALUES ('".mysqli_real_escape_string($connection, $_POST['email'])."', '".mysqli_real_escape_string($connection, $_POST['password'])."')"; 

        if (mysqli_query($connection, $query)) { 

         $error = "<p>Could not sign you up, Please try again later.</p>"; 
        } 
        else{ 

         $query = "UPDATE users SET password = '".md5(md5(mysqli_insert_id($connection)).$_POST['password'])."' WHERE Id = ".mysqli_insert_id($connection)." LIMIT 1"; 

         mysqli_query($connection, $query); 

         echo "Sign up successful"; 
        } 

     } 
    } 
} 

?> 





<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width"> 
     <meta name="author" content="Bachir Amadou"> 
     <link href="https://fonts.googleapis.com/css?family=Abel|Comfortaa" rel="stylesheet"> 
     <link rel="stylesheet" href="../carousel/css/style.css" type="text/css"> 
     <link rel="stylesheet" href="coverflow/css/style.css"> 
     <title>Dairy</title> 
     <script src="https://code.jquery.com/jquery-3.2.1.min.js"> </script> 
     <script type="text/javascript" src=""></script> 
    </head> 
    <body> 
     <div id="wrapper"> 
      <div id="top"> 
       <img class="log-img" src="./img/notebook.png" alt="notebook"> 
       <h5>Online Dairy Management System</h5> 
       <h1>Web Base System</h1> 
      </div><!--END OF TOP--> 

      <div id="error"> <?php echo $error; ?></div> 

      <div id="signup"> 
       <form id="form-signup" method="post"> 

        <input type="email" class="user" name="email" placeholder="Email..." 
        required><br> 

        <input type="password" class="user" name="password" placeholder="Password" required><br> 


        <input type="submit" name="submit" class="sign-submit" value="Sign Up"> 

       </form> 
      </div><!--END OF LOG--> 

     </div><!--END OF WRAPPER--> 
    </body> 
    </html> 

而且你應該使用預處理語句來代替的mysqli https://www.w3schools.com/php/php_mysql_prepared_statements.asp

+0

確定l進行了您所建議的更改並且錯誤消息已消失,但即時通訊仍然無法將用戶數據存儲到數據庫中。當我嘗試註冊時,它會提供成功的註冊消息,但數據庫中沒有條目。 – Bachir