Getting a MySQL error message when I try to insert a text message from a form element into my database setup to receive as type VARCHAR with a max 999 characters. I also tried setting type as TEXT. Perhaps there is something I’m just not seeing here. Error states its a syntax error, but I don’t see one. I’m using MySQL ver 5.1
Error message reads:
“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘key (number, category, question, answertxt, answer, correct, incorrect, feedback’ at line 1”.
Here is my submitting form (create.php):
<?php
session_start(); //start sesson.
$error = false;
$error = $_SESSION['error'];
if($error){
echo '<div class="error">Please fill in all required fields indicated by the * symbol</div>';
}
?>
<form action="db_adddata.php" method="post">
<label>Category</label><br>
<input type="text" id="category" name="category" value="" maxlength="50">*<br>
<label>Question text</label><br>
<textarea id="question" name="question" rows="7" cols="20"></textarea>*<br>
<label>Answer text</label><br>
<textarea id="answertxt" name="answertxt" rows="7" cols="20"></textarea>*<br>
<label>Accepted answers (comma separated)</label><br>
<textarea id="answer" name="answer" rows="7" cols="20"></textarea>*<br>
<label>Correct answer response</label><br>
<textarea id="correct" name="correct" rows="7" cols="20"></textarea>*<br>
<label>Incorrect answer response</label><br>
<textarea id="incorrect" name="incorrect" rows="7" cols="20"></textarea>*<br>
<label>Feedback response</label><br>
<textarea id="feedback" name="feedback" rows="7" cols="20"></textarea>*<br>
<label>Lesson refferal response</label><br>
<textarea id="lessonref" name="lessonref" rows="7" cols="20"></textarea>*<br>
<input type="submit" value="submit">
</form>
And here is the processing script (db_adddata.php):
<?php
session_start(); //start sesson.
require('db_connect.php'); //connect to the database.
//assign variables with the data we posted from the form on the previous page.
$category = $_POST['category'];
$question = $_POST['question'];
$answertxt = $_POST['answertxt'];
$answer = $_POST['answer'];
$correct = $_POST['correct'];
$incorrect = $_POST['incorrect'];
$feedback = $_POST['feedback'];
$lessonref = $_POST['lessonref'];
//assign vars to session vars.
$_SESSION['category'] = $category;
$_SESSION['question'] = $question;
$_SESSION['answertxt'] = $answertxt;
$_SESSION['answer'] = $answer;
$_SESSION['correct'] = $correct;
$_SESSION['incorrect'] = $incorrect;
$_SESSION['feedback'] = $feedback;
$_SESSION['lessonref'] = $lessonref;
//check if vars are empty if yes deny and go to error page. Otherwise continue.
if(empty($category) || empty($question) || empty($answertxt) || empty($answer) || empty($correct) || empty($incorrect) || empty($feedback) || empty($lessonref)) {
$_SESSION['error'] = true; //set error as true.
header('Location: create.php'); //go back to form page.
}
else {
//add the data to the database.
mysql_query("INSERT INTO key (number, category, question, answertxt, answer, correct, incorrect, feedback, lessonref, datemod) VALUES ('','$category','$question','$answertxt','$answer','$correct','$incorrect','$feedback','$lessonref',CURDATE())")or die(mysql_error());
header('Location: viewkey.php'); // go to view key page.
}
mysql_close(); //close connection.
?>
Below is a info of my MySQL table info for table named ‘key’:
Field | Type | Collation | EXTRA
number | int(6) | | AUTO_INCREMENT (primary)
category | varchar(999) | latin1_general_ci |
question | varchar(999) | latin1_general_ci |
answertxt | varchar(999) | latin1_general_ci |
answer | varchar(999) | latin1_general_ci |
correct | varchar(999) | latin1_general_ci |
incorrect | varchar(999) | latin1_general_ci |
feedback | varchar(999) | latin1_general_ci |
lessonref | varchar(999) | latin1_general_ci |
datemod | date | |
keyis a reserved word in mySQL. You need to surround that table with backticks: