2016-10-01 14 views
0

私はPHPを初めて使い、クイズ・アプリケーションを作成しようとしています。 addquestion.phpファイルに次のコードがあります。しかし、これを使って質問を追加すると、いくつかの列だけがテーブルに追加されます。エラーを投げるものはデータ型 'text'または 'varchar'です。なぜこのMySQLクエリはいくつかのフィールドを格納し、エラーメッセージを投げるだけですか?

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
\t <title>Add new question</title> 
 
\t <meta charset="utf-8"> 
 
\t <meta name="viewport" content="width=device-width initial-scale=1"> 
 
\t <link rel="stylesheet" href="css/bootstrap.min.css"> 
 
\t <link rel="stylesheet" href="css/addques.css"> 
 
</head> 
 
<body class="text-center"> 
 
\t <h1>Add question</h1> 
 
\t <?php 
 
\t \t session_start(); 
 
\t \t //only display the following content to admin 
 
\t \t if($_SESSION['usertype'] == 'admin') { 
 

 
\t ?> 
 
\t \t <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
 
\t \t \t <div> 
 
\t \t \t \t <label for="topic">Topic</label> 
 
\t \t \t \t <select name="topic" id="topic"> 
 
\t \t \t \t \t <option value="1">Logical Reasoning</option> 
 
\t \t \t \t \t <!-- removing other options to shorten the code --> 
 
\t \t \t \t \t <option value="37">MS Windows and Office</option> 
 
    
 
\t \t \t \t </select> 
 
\t \t \t </div> 
 

 
\t \t \t <div> 
 
\t \t \t \t <label for="Statement">Question Statement</label> 
 
\t \t \t \t <input id="" type="text" name="statement"> 
 
\t \t \t </div> 
 
\t \t \t <div> 
 
\t \t \t \t <label for="Option1">Option 1</label> 
 
\t \t \t \t <input id="Option1" type="text" name="option1"> 
 
\t \t \t </div> 
 
\t \t \t <div> 
 
\t \t \t \t <label for="Option2">Option 2</label> 
 
\t \t \t \t <input id="Option2" type="text" name="option2"> 
 
\t \t \t </div> 
 
\t \t \t <div> 
 
\t \t \t \t <label for="Option3">Option 3</label> 
 
\t \t \t \t <input id="Option3" type="text" name="option3"> 
 
\t \t \t </div> 
 
\t \t \t <div> 
 
\t \t \t \t <label for="Option4">Option 4</label> 
 
\t \t \t \t <input id="Option4" type="text" name="option4"> 
 
\t \t \t </div> 
 
\t \t \t <div> 
 
\t \t \t \t <label for="correctans">Correct Answer</label> 
 
\t \t \t \t <select name="correctans" id="correctans"> 
 
\t \t \t \t \t <option value="a">A</option> 
 
\t \t \t \t \t <option value="b">B</option> 
 
\t \t \t \t \t <option value="c">C</option> 
 
\t \t \t \t \t <option value="d">D</option> 
 
\t \t \t \t </select> 
 
\t \t \t </div> 
 
\t \t \t <div> 
 
\t \t \t \t <label for="imagepath">Image URL</label> 
 
\t \t \t \t <input id="imagepath" type="text" name="imagepath"> 
 
\t \t \t </div> 
 
\t \t \t <div> 
 
\t \t \t \t <label for="solution">Solution</label> 
 
\t \t \t \t <input id="solution" type="textarea" name="solution"> 
 
\t \t \t </div> 
 

 
\t \t \t <div> 
 
\t \t \t \t 
 
\t \t \t \t <input id="submit" type="submit" name="submit" value="Add"> 
 
\t \t \t </div> 
 
\t \t </form> 
 
\t <?php 
 
\t \t } 
 
\t ?> 
 
\t <?php 
 
\t \t // connect to the database 
 
\t \t require_once("connectVars.php"); 
 

 
\t \t $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die("Error connecting to database @ addquestion.php"); 
 

 
\t \t 
 
\t \t //set the variables. 
 
\t \t $statement = $_POST['statement']; 
 
\t \t $option1 = $_POST['option1']; 
 
\t \t $option2 = $_POST['option2']; 
 
\t \t $option3 = $_POST['option3']; 
 
\t \t $option4 = $_POST['option4']; 
 
\t \t $correctans = $_POST['correctans']; 
 
\t \t $imageUrl = $_POST['imagepath']; 
 
\t \t $solution = $_POST['solution']; 
 
\t \t $topicId = $_POST['topic']; 
 

 
\t // add the question 
 
\t \t $query_question = "INSERT into questionbank (statement, option1, option2, option3, option4, correctans, topicId,imagepath) 
 
\t \t \t \t \t \t VALUES ('$statement', '$option1', '$option2', '$option3', '$option4', '$correctans', '$topicId', '$imageUrl')"; 
 

 
\t \t $addQues = mysqli_query($dbc, $query_question) or die("Error adding question"); 
 

 
\t \t // add the solution 
 
\t \t $query_solution = "INSERT into solutions (solution) VALUES('$solution')"; 
 
\t \t $addSol = mysqli_query($dbc, $query_solution) or die("Error adding solution"); 
 

 
\t \t mysqli_close($dbc); 
 
\t ?> 
 
</body> 
 
</html>

+1

http://php.net/manual/en/mysqli.error.php実際のエラーを表示します。 'またはdie(" XXXを追加するエラー ");はあなたを助けません。 http://php.net/manual/en/function.error-reporting.phpと一緒に –

+0

これらは引用符です。 –

+0

Btw、あなたは確かに "主が彼らが解決されたかどうかを知っている"という質問が多い。幸運のデバッグ、それは "楽しい"の一部です。 –

答えて

0

ここでの問題は、クエリ自体に存在するが、フォームに供給されるデータはありません。シングルクォートが含まれている場合、クエリは失敗します。

フォームに入力したデータに注意してください。

関連する問題