将表单数据插入 MySQL 数据库 table
Insert form data into MySQL database table
我想将表单中的数据插入 table 但每次我点击提交时都没有任何反应,我检查并重新检查了所有内容,但找不到原因。
indextest1.php
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
<meta name="author" content="">
<meta name="description" content="">
<meta name="keywords" content="">
</head>
<body>
<form action="test1.php" method="post">
<input type="text" name="name"><br>
<input type="text" name="lastname"><br>
<input type="radio" name="radio" value="one" checked> one<br>
<input type="radio" name="radio" value="two" > two<br>
<select name="drop">
<option value="0" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
<input type="checkbox" name="check" value="1"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
test1.php
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "db-test";
$connect = ("$servername, $username, $password, $dbname") or die ("ERROR DURING CONNECTION");
$name = $_POST["name"];
$lastname = $_POST["lastname"];
$radio = $_POST["radio"];
$drop = $_POST["drop"];
$check = $_POST["check"];
$sql_insert = mysql_query("INSERT INTO test-table (id, name, lastname, radio, drop, check) VALUES ('', '$name', '$lastname', '$radio', '$drop', '$check')");
header("location: indextest1.php");
?>
Table 值
在此先感谢,我希望我提供了所有需要的信息。
我建议您先阅读如何从 PHP 连接到 MySQL
,然后再继续,因为您发布的代码显然不是这样。
http://php.net/manual/en/function.mysqli-connect.php
http://php.net/manual/en/mysqli.query.php
停止使用 mysql
,因为它已被弃用。您需要在脚本中正确指定参数。您的 $connect
是完全无效的语法(用于连接到 MySQL)
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "db-test";
$connect = mysqli_connect($servername, $username, $password, $dbname)
or die ("ERROR DURING CONNECTION");
$name = $_POST["name"];
$lastname = $_POST["lastname"];
$radio = $_POST["radio"];
$drop = $_POST["drop"];
$check = $_POST["check"];
$sql = "INSERT INTO test-table (name, lastname, radio, drop, check) VALUES ('$name', '$lastname', '$radio', '$drop', '$check')";
//Don't need to insert id since it's an PRI_KEY A_I
$result = mysqli_query($connect, $sql)
or die (mysqli_error($connect));
header("location: indextest1.php");
?>
除其他事项外,您要求受到 SQL injection attack
攻击,您可以轻松阻止。 mysqli_real_escape_string
除了另一个答案,
首先,您的这部分查询:
INSERT INTO test-table (id, name, lastname, radio, drop, check)
应该读作
INSERT INTO `test-table` (id, name, lastname, radio, `drop`, `check`)
MySQL 将您的 table 解释为 "test minus table"。使用刻度线,或使用下划线重命名它 test_table
这是一个安全的分隔符。
然后您使用了两个 MySQL 保留字,"drop" 和 "check"。对那些也使用刻度。
参考:
看看 MySQL 如何告诉您语法错误从哪里开始?
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 'drop, check)
它会在
之后给你看另一个
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 'check)
澄清一下,您将 MySQL API 与
混合使用
mysql_query("INSERT ...
哪些 mysql_
函数不会与您当前的方法混合使用。使用相同的从连接到查询
mysqli_query($connect, "INSERT ...
当然还有您愿意接受 SQL 注射的事实。使用准备好的语句:
您还应该根据 POST 数组检查空字段,例如 !empty()
.
旁注:如果要插入撇号或任何其他 MySQL 会抱怨的字符,那么您必须转义它们。无论哪种方式,你都应该。
另外,记得在页眉后加上exit;
。否则,如果下面有更多代码,它可能需要继续执行。
header("location: indextest1.php");
exit;
要将 varchar 数据类型添加到 sql table 我们必须将其放在单引号中,因此如果值在变量中,则首先将单引号放在后面,而不是放在双引号之间点(仅限 php)。
对于自动增量值,我们只需传递 null。
按如下方式编写您的查询。
$sql_insert = mysql_query("INSERT INTO test-table (id, name, lastname, radio, drop, check) VALUES (null, '".$name."', '".$lastname."', '".$radio."', ".$drop.", ".$check.")");
希望这会奏效。
我想将表单中的数据插入 table 但每次我点击提交时都没有任何反应,我检查并重新检查了所有内容,但找不到原因。
indextest1.php
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
<meta name="author" content="">
<meta name="description" content="">
<meta name="keywords" content="">
</head>
<body>
<form action="test1.php" method="post">
<input type="text" name="name"><br>
<input type="text" name="lastname"><br>
<input type="radio" name="radio" value="one" checked> one<br>
<input type="radio" name="radio" value="two" > two<br>
<select name="drop">
<option value="0" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
<input type="checkbox" name="check" value="1"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
test1.php
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "db-test";
$connect = ("$servername, $username, $password, $dbname") or die ("ERROR DURING CONNECTION");
$name = $_POST["name"];
$lastname = $_POST["lastname"];
$radio = $_POST["radio"];
$drop = $_POST["drop"];
$check = $_POST["check"];
$sql_insert = mysql_query("INSERT INTO test-table (id, name, lastname, radio, drop, check) VALUES ('', '$name', '$lastname', '$radio', '$drop', '$check')");
header("location: indextest1.php");
?>
Table 值
在此先感谢,我希望我提供了所有需要的信息。
我建议您先阅读如何从 PHP 连接到 MySQL
,然后再继续,因为您发布的代码显然不是这样。
http://php.net/manual/en/function.mysqli-connect.php http://php.net/manual/en/mysqli.query.php
停止使用 mysql
,因为它已被弃用。您需要在脚本中正确指定参数。您的 $connect
是完全无效的语法(用于连接到 MySQL)
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "db-test";
$connect = mysqli_connect($servername, $username, $password, $dbname)
or die ("ERROR DURING CONNECTION");
$name = $_POST["name"];
$lastname = $_POST["lastname"];
$radio = $_POST["radio"];
$drop = $_POST["drop"];
$check = $_POST["check"];
$sql = "INSERT INTO test-table (name, lastname, radio, drop, check) VALUES ('$name', '$lastname', '$radio', '$drop', '$check')";
//Don't need to insert id since it's an PRI_KEY A_I
$result = mysqli_query($connect, $sql)
or die (mysqli_error($connect));
header("location: indextest1.php");
?>
除其他事项外,您要求受到 SQL injection attack
攻击,您可以轻松阻止。 mysqli_real_escape_string
除了另一个答案,
首先,您的这部分查询:
INSERT INTO test-table (id, name, lastname, radio, drop, check)
应该读作
INSERT INTO `test-table` (id, name, lastname, radio, `drop`, `check`)
MySQL 将您的 table 解释为 "test minus table"。使用刻度线,或使用下划线重命名它 test_table
这是一个安全的分隔符。
然后您使用了两个 MySQL 保留字,"drop" 和 "check"。对那些也使用刻度。
参考:
看看 MySQL 如何告诉您语法错误从哪里开始?
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 'drop, check)
它会在
之后给你看另一个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 'check)
澄清一下,您将 MySQL API 与
混合使用mysql_query("INSERT ...
哪些 mysql_
函数不会与您当前的方法混合使用。使用相同的从连接到查询
mysqli_query($connect, "INSERT ...
当然还有您愿意接受 SQL 注射的事实。使用准备好的语句:
您还应该根据 POST 数组检查空字段,例如 !empty()
.
旁注:如果要插入撇号或任何其他 MySQL 会抱怨的字符,那么您必须转义它们。无论哪种方式,你都应该。
另外,记得在页眉后加上exit;
。否则,如果下面有更多代码,它可能需要继续执行。
header("location: indextest1.php");
exit;
要将 varchar 数据类型添加到 sql table 我们必须将其放在单引号中,因此如果值在变量中,则首先将单引号放在后面,而不是放在双引号之间点(仅限 php)。
对于自动增量值,我们只需传递 null。
按如下方式编写您的查询。
$sql_insert = mysql_query("INSERT INTO test-table (id, name, lastname, radio, drop, check) VALUES (null, '".$name."', '".$lastname."', '".$radio."', ".$drop.", ".$check.")");
希望这会奏效。