having trouble inserting data in mysqli database on xampp modal on index page, appreciate help.
if (isset ($_post['submit'])) { $dbservername = "localhost"; $dbusername = "root"; $dbpassword = ""; $dbname = "test_db"; $name = ($_post['name']); $gender = ($_post['gender']); $username = ($_post['username']); $email = ($_post['email']); $password = ($_post['password']); $conn = mysqli_connect($dbservername, $dbusername, $dbpassword, $dbname); $query = "insert `users` (`name`, `gender`, `username`, `email`, `password`) values ('$name', '$gender', '$username, '$email', '$password')"; $result = mysqli_query($conn, $query); if($result) { echo 'data inserted'; }else{ echo 'data not inserted'; } mysqli_free_result($result); mysqli_close($conn); } ?>
here div modal , form. not have error message server. server seems connect fine. have been searching online several days , code seems should work can't find problem.
<div id="openregister" class="modaldialog"> <div> <a href="#close" title="close" class="close">x</a> <center><font id="registertitle"><img src="./images/joucelogopng.png" width="240" height="80" alt=""/></font></center><br><br> <div id="registrationform"> <form action="" name="registerform" method="post" enctype="text/plain"> <div>name: <input type="text" name="name" required="true" placeholder="full name" size="50" value="" > </div> <br> <div>gender: <select name="gender" required > <option value="female">female</option> <option value="male">male</option> </select> </div> <br> <div>choose username: <input type="text" name="username" required size="50" value="" > </div> <br> <div id="registrationlabel">email: <input type="email" name="email" required size="50" value=""> </div> <br> <div>choose password: <input type="password" name="password" required size="50" value="" > </div> <br> <br> <br> <center><input type="submit" name="submit" value="join"> <input type="reset" value="reset"> <br> <br> </center> </form> </div>
your form contains enctype isn't supported data want pass through.
therefore, need remove enctype="text/plain"
<form>
tag.
check errors against query also.
the following won't you, should query fail:
else{ echo 'data not inserted'; }
this will:
and make sure column types , lengths correct hold data.
by way, brackets around ($_post['name'])
, other ones not needed; can safely remove them.
however, should use conditional !empty()
against post arrays going in database.
this trigger errors if of left empty, should database not accept null values.
your present code open sql injection. use prepared statements, or pdo prepared statements.
passwords
i noticed may storing passwords in plain text. not recommended.
use 1 of following:
- php 5.5's
password_hash()
function. - compatibility pack (if php < 5.5) https://github.com/ircmaxell/password_compat/
important sidenote column length:
if , when decide use password_hash()
or compatibility pack (if php < 5.5) https://github.com/ircmaxell/password_compat/, important note if present password column's length lower 60, need changed (or higher). manual suggests length of 255.
you need alter column's length , start on new hash in order take effect. otherwise, mysql fail silently.
other links of interest: