表单不发布数据到mysql数据库

时间:2014-06-18 14:03:02

标签: php html mysql

我试图将我的HTML表单中的一些数据发布到我的mysql数据库中。

这是我的HTML代码:

<!doctype html>
<html>
<head>
</head>
<body style="background-color:#BCB7B7">
<form id="form1" name="form1" method="post" style="text-align:center" action="post.php">
  <input type="text" name="name" id="name" placeholder="Name">
  <p></p>
  <input type="text" name="age" id="age" placeholder="Age">
  <p></p>
  <input type="text" name="food" id="food" placeholder="Food">
  <p></p>
  <input type="submit" name="submit" id="submit" value="Submit">
</form>
</body>
</html>

这是我的PHP代码:

<?php
$connect = mysql_connect("localhost","myusername","mypassword","mydbname");
mysql_select_db("mydbname",$connect);
mysql_query("INSERT INTO myTable VALUES Name = $_POST[name],  Age = $_POST[age], Food = $_POST[food]");
?>

但数据未保存

4 个答案:

答案 0 :(得分:3)

必须引用SQL中的字符串。您将变量转储到没有引号的SQL中。

你的语法也错了。格式为INSERT INTO table_name (column_name, column_name) VALUES value, value

您也无法逃避数据,因此您很容易受到SQL注入攻击。

解决问题:

  1. 停止使用已弃用的mysql_库并切换为mysqli_PDI
  2. 使用绑定参数将变量插入SQL
  3. 使用正确的语法
  4. question about preventing SQL injection包含how to use those libraries safely的示例。

答案 1 :(得分:1)

INSERT命令有2个不同的版本 - 您没有使用它们。

要么:

INSERT INTO myTable SET Name = "Peter", 
Age = 15, Food = "pizza"

INSERT INTO myTable (Name, Age, Food) VALUES 
("Peter", 15, "pizza")

答案 2 :(得分:0)

你必须引用这些值:

mysql_query("INSERT INTO myTable VALUES Name = '$_POST[name]',  Age = '$_POST[age]', Food = '$_POST[food]'");

提示:您应该使用mysqli或PDO函数,因为不推荐使用mysql_函数

答案 3 :(得分:0)

试试这个

<?php
$connect = mysql_connect("localhost","myusername","mypassword","mydbname") or die("error while connecting to the database");
mysql_select_db("mydbname",$connect) or die("error while selecting the database");
mysql_query("INSERT INTO myTable VALUES ('" . mysql_real_escape_string($_POST[name]) . "', '" . mysql_real_escape_string($_POST[age]) . "', '". mysql_real_escape_string($_POST[food]) . "')");
?>