Reputation: 28
I wrote this simple php code to insert information into a databse:
$cxn = mysqli_connect($host,$user,$password,$database)
or die ("Couldn't connect to server.");
$username = $_POST['username'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$password = md5($_POST['password']);
$gender = $_POST['gender'];
$age = $_POST['age'];
$query="INSERT INTO users(username,firstname,lastname,email,password,gender,age) VALUES($username,$firstname,$lastname,$email,$password,$gender,$age)";
$result = mysqli_query($cxn,$query)
or die ("Couldnt't execute query.");
Why isn't the query being executed ??
Upvotes: 0
Views: 1827
Reputation: 2408
Can't say what error you are getting but try using the insert statements with single quotes like this
$query="INSERT INTO users(username,firstname,lastname,email,password,gender,age) VALUES('$username','$firstname','$lastname','$email','$password','$gender','$age')";
Also prevent SQL injection (very important!!).
Upvotes: 1
Reputation: 92785
You have to use quotes around string values
Change
$query="INSERT INTO users(username,firstname,lastname,email,password,gender,age)
VALUES($username,$firstname,$lastname,$email,$password,$gender,$age)";
to
$query="INSERT INTO users(username,firstname,lastname,email,password,gender,age)
VALUES('$username','$firstname','$lastname','$email','$password','$gender','$age')";
On a side note: Interpolating query strings and not sanitizing user input is a wide open door for SQL injections. Please learn and use prepared statements instead.
With prepared statement your code might look like
...
$query="INSERT INTO users(username,firstname,lastname,email,password,gender,age)
VALUES(?,?,?,?,?,?,?)";
// Prepare statement
if (!($stmt = $cxn->prepare($query))) {
echo "Prepare failed: (" . $cxn->errno . ") " . $cxn->error;
}
// Bind parameters
if (!$stmt->bind_param("sssssss", $username,$firstname,$lastname,$email,$password,$gender,$age)) {
echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}
// Execute query
if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
Upvotes: 5
Reputation: 1269873
Your query looks like:
INSERT INTO users(username,firstname,lastname,email,password,gender,age)
VALUES($username,$firstname,$lastname,$email,$password,$gender,$age)
In all likelihood, many values are strings, so they need to be surrounded by single quotes. And, in all likelihood, the variables themselves don't have the single quotes in them. Of course, parameter substitution is the way to go. But, in the meantime, you could try:
INSERT INTO users(username,firstname,lastname,email,password,gender,age)
VALUES('$username', '$firstname' , '$lastname', '$email', '$password', '$gender','$age');
Upvotes: 2