This question already has an answer here:
I don't know what is wrong with this code. The data isn't inserting into the database.
$connection = mysqli_connect('localhost', 'root', '', 'login-system');
if ($connection) {
echo "everything works fine";
} else {
echo "there is something wrong";
}
if (isset($POST['submit'])) {
$username = $POST['username'];
$password = $POST['password'];
$query = "INSERT INTO users(username, password)";
$query .= 'VALUES("$username", "$password")';
$result = mysqli_query($connection,$query);
if (!$result) {
die('Query Failed'. mysqli_error());
}
}
Do you have any suggestion why this not working. Remember the server gets connected to database but not inserting data.
Thanks
</div>
The problem is you are using $POST['submit']
which is wrong you need to use
$_POST['submit']
because php does not have any variable called $POST
. Your full code should be like this.
include_once 'db.php';
if (isset($_POST['submit'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$query = "INSERT INTO users(username, password) VALUES('$username', '$password')";
$result = mysqli_query($connection,$query);
if (!$result) {
die('Query Failed'. mysqli_error($connection));
}
}
NOTE: Your code is open to SQL injection attack you need to use prepared query.
your $query string alter to this query width . oprator attach 2 string
include_once 'db.php';
if (isset($POST['submit'])) {
$username = $POST['username'];
$password = $POST['password'];
$query = "INSERT INTO users(username, password)";
$query .= 'VALUES("'.$username.'", "'.$password.'")';
$result = mysqli_query($connection,$query);
if (!$result) {
die('Query Failed'. mysqli_error());
}
}
Add Some White Space before VALUES in query concatenation
$connection = mysqli_connect('localhost', 'root', '', 'login-system');
if ($connection) {
echo "everything works fine";
} else {
echo "there is something wrong";
}
if (isset($_POST['submit'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$query = "INSERT INTO users(username, password)";
$query .= ' VALUES("$username", "$password")';// Here add space before VALUES
$result = mysqli_query($connection,$query);
if (!$result) {
die('Query Failed'. mysqli_error());
}
}
I tried it on my side. I found $_POST variable does not have submit so it does not go into if block. Remove if condition it will work fine. The new code can be like below.
if ((is_array($_POST)) && (count($_POST) > 1)) {
$username = $_POST['username'];
$password = $_POST['password'];
$query = "INSERT INTO users(username, password)";
$query .= " VALUES('$username', '$password')";
$result = mysqli_query($connection,$query);
if (!$result) {
die('Query Failed'. mysqli_error());
}
}
Hope it will help you. Let me know if have any problem with it. Happy coding :)
Try different way :)
$connection = mysqli_connect('localhost', 'root', '', 'login-system');
if ($connection) {
echo "everything works fine";
} else {
echo "there is something wrong";
}
if ($_SERVER['REQUEST_METHOD']=='POST') {
$username = $_POST['username'];
$password = $_POST['password'];
$query = sprint_f("INSERT INTO users set username='%s', password='%s'" ,$username,$password);
$result = mysqli_query($connection,$query);
if (!$result) {
die('Query Failed'. mysqli_error());
}
}