我使用以下脚本从表单中将数据输入到我的数据库中。我已经回应了在开始时声明的每个值,并且它们都很好。
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
答案 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
语句可以包含WHERE
,INSERT
语句本身不包含{{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'
但你应该尝试使用预备语句