-2

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

    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
4

3 回答 3

4

您缺少以下报价$questionnaireID

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

同时删除该WHERE子句。

UPDATEstatements 可以使用该WHERE语句根据条件更新现有的数据库记录。授予INSERT SELECT的语句可以包含 a WHEREINSERT语句本身不包含。

于 2013-06-20T09:31:28.220 回答
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_* 已弃用的函数

于 2013-06-20T09:31:34.207 回答
1
($questionnaireID'

应该

('$questionnaireID'

但你真的应该尝试使用准备好的语句

于 2013-06-20T09:31:25.930 回答