表单输入将不会发布到MYSQL,但会显示在屏幕上

时间:2019-05-01 23:55:57

标签: php mysql

表单将数据发送到此页面。 print_r在屏幕上输出我想要放入表中的所有内容以检查其是否存在,但表没有任何内容。我只能在phpmyadmin中手动填充表格。很抱歉,如果这真的很简单-我才学习了两个星期!
运行页面时,日志或屏幕上均未显示任何错误。 print_r确实回显了数组,但表

中没有任何内容
<?php


session_start();
// Change this to your connection info.
$DATABASE_HOST = 'localhost';
$DATABASE_USER = 'root';
$DATABASE_PASS = '';
$DATABASE_NAME = 'users';

$username = ($_POST['username']);
$password = ($_POST['password']);
$companyName = ($_POST['companyName']);
$confirmPassword = ($_POST['confirmPassword']);

// Try and connect using the info above.
$con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, 
$DATABASE_NAME);
if (mysqli_connect_errno()) {
    // If there is an error with the connection, stop the script and 
    display the error.
    die ('Failed to connect to MySQL: ' . mysqli_connect_error());


    }



    print_r ($_POST);


    // Now we check if the data was submitted, isset() function will check 
    //if  the data exists.
    if (!isset($_POST['username'], $_POST['password'], 
    $_POST['companyName'])) {
    // Could not get the data that should have been sent.
    die ('Please complete the registration form!');
    }

    // Make sure the submitted registration values are not empty.
    if (empty($_POST['username']) || empty($_POST['password']) || 
    empty($_POST['companyName'])) {
    // One or more values are empty.
    die ('Please complete the registration form');
    }
    print_r ($_POST);

    // We need to check if the account with that username exists.
    if ($stmt = $con->prepare('SELECT id, password FROM phplogin WHERE 
    username = ?')) {
    // Bind parameters (s = string, i = int, b = blob, etc), hash the 
    //password using the PHP password_hash function.
    $stmt->bind_param('s', $_POST['username']);
    $stmt->execute();
    $stmt->store_result();

     // Store the result so we can check if the account exists in the 
    // database.
     if ($stmt->num_rows > 0) {
    // Username already exists
    echo 'Username exists, please choose another!';
    } else {
    // Username doesnt exists, insert new account
    /* $stmt = $con->prepare('INSERT INTO phplogin (username, password, 
      companyName ) VALUES (?, ?, ?)');*/ 

    if (false !== true){
        /* We do not want to expose passwords in our database, so hash the 
        password and use password_verify when a user logs in.
        $password = password_hash($_POST['password'], PASSWORD_DEFAULT);
        $stmt->bind_param('sss', $_POST['$username'], $password, 
        $_POST['$companyName']);
        $stmt->execute();*/
        $sql = 'INSERT INTO phplogin (username, password, companyName ) 
        VALUES ($username, $password, $companyName)';
        echo 'You have successfully registered, you can now login!';
        echo ("  ".$password." ".$username."  ".$companyName);
        echo '  well done';

    } else {
        /* Something is wrong with the sql statement, check to make sure accounts table exists with all 3 fields.*/
        echo 'Could not prepare the new statement!';
        print_r ($_POST);
        }
        }
        }



        $con->close();

        ?>

1 个答案:

答案 0 :(得分:0)

//$sql = 'INSERT INTO phplogin (username, password, companyName ) VALUES ($_POST[username], $password, $_POST[companyName])';

PHP认为它应该执行VALUES,即使这不是任何适当的操作。使用/ *这是注释* /,因为它可以防止此类情况的发生。

也应注意:不要在if语句中分配值。您可以在自己的行上分配$ stmt,只需检查

If($stmt === true) {}

If($stmt !== true) {}

您明白了。

另外要注意的一点是,您应该更喜欢使用PDO。由于ts语法,它很容易处理和理解,并且使OOP更加容易。可以使用Mysqli,但是我个人不建议使用它。