I want to insert data from a form into a table but everytime i hit submit nothing happens, i checked and re-checked everything but i can't find the reason.
indextest1.php
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
<meta name="author" content="">
<meta name="description" content="">
<meta name="keywords" content="">
</head>
<body>
<form action="test1.php" method="post">
<input type="text" name="name"><br>
<input type="text" name="lastname"><br>
<input type="radio" name="radio" value="one" checked> one<br>
<input type="radio" name="radio" value="two" > two<br>
<select name="drop">
<option value="0" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
<input type="checkbox" name="check" value="1"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
test1.php
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "db-test";
$connect = ("$servername, $username, $password, $dbname") or die ("ERROR DURING CONNECTION");
$name = $_POST["name"];
$lastname = $_POST["lastname"];
$radio = $_POST["radio"];
$drop = $_POST["drop"];
$check = $_POST["check"];
$sql_insert = mysql_query("INSERT INTO test-table (id, name, lastname, radio, drop, check) VALUES ('', '$name', '$lastname', '$radio', '$drop', '$check')");
header("location: indextest1.php");
?>
Table values
Thanks in advance, i hope i provided all the info needed.
to add varchar data type to a sql table we have to put it in single quote, so first put single quote after that if the value is in variable than put between double quotes and dots (for php only).
For auto increment value we only have to pass null.
write your query as following.
Hope this will work.
Besides the other answer,
Firstly, this part of your query:
should read as
MySQL is interpreting your table as "test minus table". Use ticks, or rename it using an underscore
test_table
which is a safe seperator.Then you're using two MySQL reserved words, "drop" and "check". Use ticks for those also.
Reference:
See how MySQL is telling you where the syntax error begins?
and it would have shown you another one after that being
Just to clarify, you are mixing MySQL APIs with
which those
mysql_
functions do not intermix with your present method. Use the same from connection to queryand of course the fact that you're open to SQL injection. Use a prepared statement:
You should also check for empty fields against your POST arrays such as
!empty()
.Sidenote: If an apostrophe or any other character is to be inserted that MySQL will complain about, then you must escape them. Either way, you should.
Plus, remember to add
exit;
after header. Otherwise and if you have more code below that, it may want to continue and execute.I'd recommend you read up on how to connect to
MySQL
first from PHP before proceeding as your code posted evidently shows otherwise.http://php.net/manual/en/function.mysqli-connect.php http://php.net/manual/en/mysqli.query.php
Stop using
mysql
, as it is deprecated. You need to specify the arguments correctly in your script. Your$connect
is completely invalid syntax (for connecting to MySQL)Among other things, you are asking to be hit with an
SQL injection attack
which you can easily block via.mysqli_real_escape_string