2016-05-01 2 views
0

Я был повсюду в Google и пытался выяснить, почему это продолжается. Я знаю, что на этом сайте были заданы подобные вопросы, но их ответы мне не удачны. Он подключается к базе данных, но не отображает запись (пустая запись для каждого столбца). В php-коде есть дополнительные комментарии для тестирования. Любая помощь приветствуется.PHP не вставляет данные в базу данных MYSQL. Вставляет пустую строку вместо

Вот HTML-форм

<form action="../controller/register1.php" method="POST" > 
<fieldset> 
    First Name&nbsp;<input class="inputs" type="text" name="firstname" placeholder="Enter your firstname" required> 
    <br> 
    Last Name &nbsp;<input class="inputs" type="text" name="lastname" placeholder="Enter your lastname" required> 
    <br> 
    User Name <input class="inputs" type="text" name="username" placeholder="Enter your username" required> 
    <br> 
    Password &nbsp;&nbsp;<input class="inputs" type="password" name="password" required> 
    <br> 
    Email &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input class="inputs" type="text" name="email" > 
    <br> 
    <input class="inputs" type="submit" name="submit" value="Register" /> 

</fieldset> 

Вот PHP

<?php 

$connection = mysqli_connect("localhost","charcoun_donaldh","Rusty1992","charcoun_phplogin","3306") or die("Could not connect!"); 

if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

//$firstname = stripslashes($firstname); 
$firstname = mysqli_real_escape_string($connection, $_POST['$firstname']); 

//$lastname = stripslashes($lastname); 
$lastname = mysqli_real_escape_string($connection, $_POST['$lastname']); 

//$username = stripslashes($username); 
$username = mysqli_real_escape_string($connection, $_POST['$username']); 

//$password = stripslashes($password); 
$password = mysqli_real_escape_string($connection, $_POST['$password']); 

//$email = stripslashes($email); 
$email = mysqli_real_escape_string($connection, $_POST['$email']); 


$sql = "INSERT INTO users (firstname, lastname, username, password, email) 
      VALUES ('$firstname','$lastname','$username','$password','$email')"; //Use ".md5($password)." for encrypted 
//$result = mysqli_query($connection, $sql); 

if(!mysqli_query($connection, $sql)){ 
     die('Error: ' . mysqli_error($connection)); 
     } 
else{ 
     echo "<br/><h3>You have been registered successfully. Click here to return <a href='../view/index.php'>Home.</a></h3>"; 
    } 

?>

+0

** ПРЕДУПРЕЖДЕНИЕ **: при использовании 'mysqli' вы должны использовать [параметризованные запросы] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) и [' bind_param' ] (http://php.net/manual/en/mysqli-stmt.bind-param.php), чтобы добавить данные пользователя в ваш запрос. ** НЕ ПРИНИМАЙТЕ ** использовать ручное экранирование и интерполяцию строк или конкатенацию, чтобы выполнить это, потому что вы создадите серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/), если вы когда-нибудь забудете что-то избежать. – tadman

+0

** ПРЕДУПРЕЖДЕНИЕ **: Написание собственного уровня контроля доступа непросто, и есть много возможностей, чтобы заставить его серьезно ошибиться. Пожалуйста, не пишите свою собственную систему аутентификации, если какая-либо современная [инфраструктура разработки] (http://codegeekz.com/best-php-frameworks-for-developers/), например [Laravel] (http://laravel.com/) поставляется с надежной [системой аутентификации] (https://laravel.com/docs/5.2/authentication). В абсолютном порядке следуйте [рекомендуемым рекомендациям по безопасности] (http://www.phptherightway.com/# безопасность) и никогда не хранит пароли как обычный текст. MD5 также опасно устарел. – tadman

+1

Я уверен, что вы не можете получить переменные POST, подобные этому '$ _POST ['$ firstname']', попробуйте удалить '$'. – Amous

ответ

0

Удалите $, когда вы запрашиваете переменные POST. Например, измените $_POST['$firstname'] на $_POST['firstname']. Кроме того, если вы попытаетесь с помощью $_POST['firstname'] вы должны получать

Undefined индекс: $ ПгвЬЫате

ошибки. Если вы не получили сообщение об ошибке, убедитесь, что у вас есть display errors turned on.

Смежные вопросы