将表单数据插入MySQL数据库表

时间:2015-09-07 01:23:53

标签: php mysql database forms insert

我想将表格中的数据插入表格,但每次点击提交都没有任何反应,我检查并重新检查了所有内容,但我无法找到原因。

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");

?>

表值

enter image description here

在此先感谢,我希望我提供了所需的所有信息。

3 个答案:

答案 0 :(得分:3)

除了其他答案,

首先,您的查询的这一部分:

INSERT INTO test-table (id, name, lastname, radio, drop, check)

应为

INSERT INTO `test-table` (id, name, lastname, radio, `drop`, `check`)

MySQL将您的表解释为&#34;测试减去表&#34;。使用刻度,或使用下划线test_table重命名,这是一个安全的分隔符。

然后你使用了两个MySQL保留字,&#34; drop&#34;和&#34;检查&#34;。也可以使用滴答声。

参考:

了解MySQL如何告诉您语法错误从何处开始?

  

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在“删除,检查”

附近使用正确的语法

并且在

之后它会向你显示另一个
  

您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在&#39; check)

附近使用正确的语法

为了澄清,您正在将MySQL API与

混合使用
mysql_query("INSERT ...

哪些mysql_函数不与您现有的方法混合。使用相同的连接查询

mysqli_query($connect, "INSERT ...

当然还有你对SQL注入开放的事实。使用准备好的声明:

您还应该针对POST阵列检查空字段,例如!empty()

旁注:如果要插入一个撇号或任何其他字符,MySQL会抱怨,那么你必须逃避它们。无论哪种方式,你应该。

另外,请记住在标题后添加exit;。否则,如果你有更多的代码,它可能想继续并执行。

header("location: indextest1.php");
exit;

答案 1 :(得分:0)

我建议您在继续操作之前先阅读如何从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

答案 2 :(得分:0)

要将varchar数据类型添加到sql表中,我们必须将它放在单引号中,所以如果值在变量之后首先放入单引号,而不是放在双引号和点之间(仅适用于php)。

对于自动增量值,我们只需要传递null。

按以下方式编写查询。

$sql_insert = mysql_query("INSERT INTO test-table (id, name, lastname, radio, drop, check) VALUES (null, '".$name."', '".$lastname."', '".$radio."', ".$drop.", ".$check.")");

希望这会奏效。