2013-12-17 138 views
-2

這裏是我的表:MySQL的INSERT INTO問題

CREATE TABLE IF NOT EXISTS CauHoi(MaCH VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci PRIMARY KEY, MaMH VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, Question TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, Difficulty VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, a TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, b TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, c TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, d TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, Answer VARCHAR(10) NOT NULL); 

這裏是我的查詢:

answerComboBox->addItem("a"); 
answerComboBox->addItem("b"); 
answerComboBox->addItem("c"); 
answerComboBox->addItem("d"); 
q.prepare("INSERT INTO CauHoi(MaCH,MaMH,Question,Difficulty,a,b,c,d,Answer) VALUES ('" 
      + maCHLineEdit->text() + "','" 
      + maMHLineEdit->text() + "','" 
      + questionTextEdit->toPlainText() + "','" 
      + difficultyComboBox->currentText()+ "','" 
      + aLineEdit->text() + "','" 
      + bLineEdit->text() + "','" 
      + cLineEdit->text() + "','" 
      + dLineEdit->text() + "'," 
      + answerComboBox->currentText()+");"); 

然而,當q.exec(),如果answerComboBox-> currentText()==」 c「,CauHoi表中的Answer列成爲cLineEdit-> text()。它是多麼的瘋狂!我只是希望它只是「a」,「b」,「c」,「d」。

請幫我

+0

您需要更加小心你的SQL語句。嘗試在準備之前將其打印出來。你很容易受到SQL注入攻擊。爲了測試它,準備一個關於三個劍客的問題,其中一個答案是「D'Artagnan」。 – nvoigt

回答

0

您需要添加的開始和結束的單引號括起來

answerComboBox->currentText() 
0

我找到了。我在answerComboBox-> currentText()周圍缺少單引號。