MySQL语法错误从<textarea>插入到VARCHAR类型(999)&lt;&lt;&lt;已解决使用不正确的表名</textarea>

时间:2012-05-25 14:59:57

标签: mysql

当我尝试将表单元素中的文本消息插入到我的数据库设置中以接收最多999个字符的VARCHAR类型时,收到MySQL错误消息。我也尝试将类型设置为TEXT。也许有些东西我只是没有在这里看到。错误表明它的语法错误,但我没有看到。我正在使用MySQL ver 5.1

错误消息显示:

“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以便在'密钥(数字,类别,问题,回答文本,答案,正确,错误,反馈')附近使用正确的语法第1行“。

这是我的提交表单(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>

这是处理脚本(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.

    ?>

以下是我的MySQL表格信息,该表格名为'key':

字段|输入|整理| EXTRA


号码int(6)| | AUTO_INCREMENT(主要)


类别| varchar(999)| latin1_general_ci |


问题| varchar(999)| latin1_general_ci |


answertxt | varchar(999)| latin1_general_ci |


回答| varchar(999)| latin1_general_ci |


正确| varchar(999)| latin1_general_ci |


不正确| varchar(999)| latin1_general_ci |


反馈| varchar(999)| latin1_general_ci |


lessonref | varchar(999)| latin1_general_ci |


datemod |日期| |


2 个答案:

答案 0 :(得分:2)

key是mySQL中的保留字。你需要用反引号包围该表:

INSERT HIGH_PRIORITY INTO `key` ... etc

答案 1 :(得分:0)

尝试添加“`'key'

像这样:

INSERT HIGH_PRIORITY INTO `key` (number, category, question, answertxt, answer, correct, incorrect, feedback, lessonref, datemod) 
VALUES ('','$category','$question','$answertxt','$answer','$correct','$incorrect','$feedback','$lessonref',CURDATE())

应该工作