您的SQL语法中有错误,但似乎无法跟踪错误

时间:2013-06-20 09:30:15

标签: php sql mysqli syntax-error

我使用以下脚本从表单中将数据输入到我的数据库中。我已经回应了在开始时声明的每个值,并且它们都很好。

    include("connectmysqli.php"); 
    echo '<link rel="stylesheet" href="http://towerroadacademy.co.uk/templates/rt_reflex_j16/css/template.css">';
    if (isset($_GET['questionnaireID'])) {$questionnaireID = $_GET['questionnaireID'];}else {$questionnaireID = '';}
    if (isset($_POST['newquestionnumber'])) {$questionnumber = $_POST['newquestionnumber'];}
    if (isset($_POST['questionID'])) {$questionID = $_POST['questionID'];}else {$questionID = '';}
    if (isset($_POST['question'])) {$question = $_POST['question'];}else {$question = '';}
    if (isset($_POST['lowerlabel'])) {$lowerlabel = $_POST['lowerlabel'];}else {$lowerlabel = '';}
    if (isset($_POST['middlelabel'])) {$middlelabel = $_POST['middlelabel'];}else {$middlelabel = '';}
    if (isset($_POST['upperlabel'])) {$upperlabel = $_POST['upperlabel'];}else {$upperlabel = '';}

    $stmt = $db->prepare("INSERT INTO `QuestionnaireQuestions` (`questionnaireID`, `questionnumber`, `questionID`, `question`, `lowerlabel`, `middlelabel`, `upperlabel`) VALUES ($questionnaireID', '$questionnumber', '$questionID', '$question', '$lowerlabel', '$middlelabel', '$upperlabel') WHERE questionnaireID='$questionnaireID';");
    if (!$stmt) trigger_error($db->error);
    $stmt->execute(); 

我不断收到以下错误,但似乎无法追查导致错误的原因。

Notice: 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 '', '3', '1947679104', 'questonofngdfngodfngo',     'lower', 'midddle', 'upper') WHER' at line 1 in     /home2/towerroa/public_html/questionnaires/addanotherquestionsubmit.php on line 16 Fatal error: Call     to a member function execute() on a non-object in     /home2/towerroa/public_html/questionnaires/addanotherquestionsubmit.php on line 17

表QuestionnaireQuestions看起来像这样:

    id  questionnaireID questionnumber  questionID  question    lowerlabel  middlelabel upperlabel

3 个答案:

答案 0 :(得分:4)

您错过$questionnaireID上的引文:

INSERT INTO `QuestionnaireQuestions` (`questionnaireID`, `questionnumber`, `questionID`, `question`, `lowerlabel`, `middlelabel`, `upperlabel`) VALUES ('$questionnaireID', '$questionnumber', '$questionID', '$question', '$lowerlabel', '$middlelabel', '$upperlabel') 

同时删除WHERE子句。

UPDATE语句可以使用WHERE语句根据条件更新现有数据库记录。授权INSERT SELECT语句可以包含WHEREINSERT语句本身不包含{{1}},{{1}}语句。

答案 1 :(得分:2)

INSERT无法使用WHERE条件,如果只想要UPDATE行,那么您可以使用WHERE条件并替换此

VALUES ($questionnaireID',......

VALUES ('$questionnaireID',

您错过了单引号删除';'从最后也是。现在查询将是

$stmt = $db->prepare("INSERT INTO `QuestionnaireQuestions` (`questionnaireID`,
                      `questionnumber`, `questionID`, `question`, `lowerlabel`,
                      `middlelabel`, `upperlabel`) VALUES ('$questionnaireID',
                      '$questionnumber', '$questionID', '$question', '$lowerlabel',
                      '$middlelabel', '$upperlabel')");

但我必须明白你正在使用PDO语句而不是mysql_ *不推荐使用的函数

答案 2 :(得分:1)

($questionnaireID'

应该是

('$questionnaireID'

但你应该尝试使用预备语句