使用POST方法将数据从表单插入mysql

Posted

技术标签:

【中文标题】使用POST方法将数据从表单插入mysql【英文标题】:Inserting datafrom form into mysql with POST method 【发布时间】:2013-12-16 19:51:13 【问题描述】:

我有一段时间没有做 php,但我真的不明白我错过了什么。 我正在尝试将一些数据从 FORM 插入 mysql ,但它仍然失败。 这是带有 FORM 的文件:

  <html>
  <head>
  <link type="text/css" rel="stylesheet" href="stylesheet.css"/>
  <title>registrace</title>
  </head>

  <body>
  <H1>  The Best Page! </H1>
  <p>


  "Please registrate"


  <form action="zpracovani.php" method="post">  
          Name <input type="text" size="20" name="Name" value=""><br>
          Surname <input type="text" size="30" name="Surname" value=""><br>
          Username <input type="text" size="30" name="username" value=""><br>
          Password <input type="text" size="10" name="password" value=""><br>
          Retype password <input type="text" size="10" name="password2" value=""><br>
          <input type="image" name="button" value="submit" class="button"     src="button.jpg">

   </form>

   </p>
   </body>
   </html>

如您所见,我正在发送数据以进入文件“zpracovani.php”。我确实测试了我是否连接到了 mysql 服务器(它通过了),并检查了我是否连接到了正确的数据库(也没有问题地通过了)。

<html>
   <?php
   echo "Wait please";
   $con=mysql_connect ('localhost','root','');

   if (!$con)  
   
   die ( 'Could not connect: ' . mysql_error());

      
      mysql_select_db ('registrace') or die("cannot select DB");
      echo @mysql_ping() ? 'true' : 'false';

      $sql="INSERT INTO 'registrace'(Name, surname, username, password).
      VALUES('$_POST[Name]','$_POST[Surname]','$_POST[username]','$_POST[password]')";
      $result=mysql_query($sql);
      if($result)

      echo("<br>Input data is succeed");

      else

      echo("<br>Input data is fail");`
      
      mysql_close($con);
      ?>
      </html> 

下面是我制作的mysql表的概述。

ID          int(11)         
Name        varchar(20) latin1_swedish_ci       
Surname     varchar(30) latin1_swedish_ci       
username    varchar(30) latin1_swedish_ci       
password    varchar(10) latin1_swedish_ci   

但是,我已连接到数据库并要更正表,但它仍然无法将任何人插入数据库。有人可以调查一下并帮助我吗?

提前致谢!

【问题讨论】:

它会插入什么吗?你的php代码执行了吗? 【参考方案1】:

要么删除'registrace' 中的引号,要么在INSERT INTO 'registrace' 中使用反引号

例子:

INSERT INTO `registrace`

使用反引号更好。

同时删除点:

$sql="INSERT INTO 'registrace'(Name, surname, username, password).

它应该读作:

$sql="INSERT INTO `registrace` (Name, surname, username, password)

重新格式化:

$sql="INSERT INTO `registrace` (Name, surname, username, password)
VALUES 
('$_POST['Name']','$_POST['Surname']','$_POST['username']','$_POST['password']')";

或者遵循这个约定:

$unsafe_variable = $_POST["user-input"]
$safe_variable = mysql_real_escape_string($unsafe_variable);

mysql_query("INSERT INTO table (column) VALUES ('" . $safe_variable . "')");

注意:我还注意到您的数据库和表使用相同的名称。

确保确实如此。

您的数据库:

mysql_select_db ('registrace')

你的桌子呢?

INSERT INTO `registrace`

另外,增加VARCHAR 的值并考虑使用MySQLi_ 和准备好的语句或PDO 是个好主意。 MySQL_ 函数已弃用。

请阅读以下文章:

How can I prevent SQL injection in PHP? On owasp.org

【讨论】:

【参考方案2】:

首先:使用mysqli

第二:摆脱mysql ping

第三次:变化:

"......'$_POST[xxx]'......"

进入:

"......'$_POST['xxx']'....."

【讨论】:

【参考方案3】:

谢谢大家,它现在正在工作。

顺便说一句,mysql ping 只是检查我是否像我在原始帖子中所写的那样连接良好:)

无论如何,这非常有帮助 thx

【讨论】:

我很高兴听到这个消息。然而,为了结束问题并且不让它留在未回答的类别中,最好接受一个答案作为解决您问题的答案。有一个幸福的结局总是很高兴;-)

以上是关于使用POST方法将数据从表单插入mysql的主要内容,如果未能解决你的问题,请参考以下文章

将表单数据插入 MySQL?

使用foreach从动态post数组插入sql

在MySQL中插入表单数据?

将php数组插入mySql

POST方法不将数据插入数据库表

使用 PDO 和 PHP 将表单中的数据插入 MySQL 数据库