php - 为什么这个 Mysql 查询只存储几个字段并抛出错误消息?

标签 php html mysql

我是 PHP 新手,正在尝试编写一个测验应用程序。我的 addquest.php 文件中有以下代码。但是当我使用它添加问题时,表中只添加了一些列。抛出错误的数据类型为“text”或“varchar”。

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

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

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

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

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

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

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

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

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

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

最佳答案

这里的问题不在于查询本身,而在于输入表单的数据。如果包含单引号,则查询失败。

请注意表单中输入的数据。

关于php - 为什么这个 Mysql 查询只存储几个字段并抛出错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39809992/

相关文章:

php - 我想要来自 mysql 数据库的列的 Distinct 值和 orderby 另一列

javascript - 如何使CSS动画时间随机?

python - 使用 BeautifulSoup 4 和 Python 解析 HTML

php - 字段 'password' 没有默认值

php - 字符串值比较优化 MySQL 查询

javascript - 传单 TileWMS 边界

mysql - 更新语句中不存在需要更多时间

php - Yii2 动态连接到第二个数据库

php - 在 Woocommerce 3 中重命名相关产品标题

javascript - 如何让人们在同一表单上进行协作并实时更新?