php注册表单没有向数据库提交值并显示空白页面(没有错误)

时间:2015-04-15 09:11:23

标签: php mysql forms registration

我终于让我的注册页面没有错误,但现在当我提交表单时,我只是得到一个空白页面,没有任何错误。输出应该是一条消息,然后我检查数据库,它仍然是一个空集。谁能告诉我哪里出错/如何解决?

以下是代码:

<?php
require_once __DIR__.'/config.php';

if($_POST[ 'username' ]!="") {
$username =($_POST["username"]);
$email =($_POST["email"]);
$password =($_POST["password"]);

$sql = "insert into users set username='".$username."', email='".$email."', password='".md5($password)."' ";
$sql =($sql);



$msg = 'Thank you for completing your online registration form!.';
}else{
$msg = "Registration failed";
}  

?>

编辑: (根据Yuva Raj的回答)

require_once __DIR__.'/config.php';
session_start();

 $connection = mysqli_connect(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_DATABASE);

    if(isset($_POST['submit'])) 
   {
    $username =$_POST["username"];
    $email =$_POST["email"];
    $password =$_POST["password"];



    $sql = "insert into users set username='".$username."', email='".$email."', password='".$password."' ";
    $result = mysqli_query($connection, $sql);

    if($result)
    {
      echo "successfully inserted";
    }
   else
    {
     echo "failed";
    }
    }

我做了一些编辑但它仍然显示空白而没有输入任何数据库,我知道我需要让它更安全,但是,目前,我只是想要输入所以我知道它&# 39;工作。

4 个答案:

答案 0 :(得分:3)

之后

$sql = "insert into users set username='".$username."', email='".$email."', password='".md5($password)."' ";

你应该添加,

$result = mysqli_query($connection, $sql);

执行。

完整代码:

   $connection = mysqli_connect("localhost","username","password","databasename");

    if(isset($_POST['submit'])) // checks if form is submitted
   {
    $username =$_POST["username"];
    $email =$_POST["email"];
    $password =$_POST["password"];

     // use mysqli_real_escape_string for $username, $email, $password to escape special characters 

    $sql = "sql query comes here";
    $result = mysqli_query($connection, $sql);

    if($result)
    {
      echo "successfully inserted";
    }
   else
    {
     echo "failed";
    }

  }

编辑:

尝试插入查询,例如

$query = "INSERT INTO `$table_name` (`username`, `email`,`password`) VALUES ('$username', '$email', '$password')";

根据需要更改table_name,列名称。

答案 1 :(得分:1)

您还需要echo您的消息。

顺便说一下,你的方法完全对SQL injection开放。

答案 2 :(得分:1)

您的问题是您在给定示例中缺少任何形式或执行。

您可以在本教程中使用PDO:http://www.mysqltutorial.org/php-querying-data-from-mysql-table/

我也会查看,PHP类教程,防止SQL注入,基本PHP OOP和PHP会话教程。您可能会发现使用PHP框架可以更轻松地实现这一点,但如果您打算执行任何代码工作,最好能够处理正在发生的事情。

答案 3 :(得分:0)

我使用Yuva Raj的答案来修改我的代码然后使用了Chris的教程并提出了工作代码。它仍然需要更多的安全性,但它是一个开始。

require_once __DIR__.'/config.php';
session_start();

$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);

$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];

$stmt = $dbh->prepare("insert into users set username='".$username."', email='".$email."', password='".$password."' ");
$stmt->execute();
echo "<p>You are registered!</p>";