输入时,PHP表单不会向MySQL发送数据

时间:2016-04-13 20:00:30

标签: php mysql forms

这是我的代码。

我希望包含的表单将数据发送到我创建的MySQL数据库中名为“contacts”的表。

表格中有四个字段;标题,姓名,电子邮件,查询。

这是我为了适合我的网站而复制和编辑的代码。我是.PHP的新手!

     <?php
     if(isset($_POST['add'])) {
        $dbhost = 'localhost';
        $dbuser = 'root';
        $dbpass = '';
        $conn = mysql_connect($dbhost, $dbuser, $dbpass);

        if(! $conn ) {
           die('Could not connect: ' . mysql_error());
        }

        if(! get_magic_quotes_gpc() ) {
           $p_title = addslashes ($_POST['p_title']);
           $p_name = addslashes ($_POST['p_name']);
           $p_email = addslashes ($_POST['p_email']);
        }else {
           $p_name = $_POST['p_name'];
           $p_email = $_POST['p_email'];
        }

        $p_enquiry = $_POST['p_enquiry'];

        $sql = "INSERT INTO contacts ". "(p_name,p_email, p_enquiry, p_title 
           join_date) ". "VALUES('$p_name','$p_email',$p_enquiry,$p_title NOW())";

        mysql_select_db('test_db');
        $retval = mysql_query( $sql, $conn );

        if(! $retval ) {
           die('Could not enter data: ' . mysql_error());
        }

        echo "Entered data successfully\n";

        mysql_close($conn);
     }else {
        ?>

           <form method = "post" action = "<?php $_PHP_SELF ?>">
              <table width = "400" border = "0" cellspacing = "1" 
                 cellpadding = "2">

                 <tr>
                    <td width = "100"><p>Title:</p></td>
                    <td><input name = "p_title" type = "text" 
                       id = "p_title"></td>
                 </tr>

                 <tr>
                    <td width = "100"><p>Name:</p></td>
                    <td><input name = "p_name" type = "text" 
                       id = "p_name"></td>
                 </tr>

                 <tr>
                    <td width = "100"><p>Email:</p></td>
                    <td><input name = "p_email" type = "text" 
                       id = "p_email"></td>
                 </tr>

                 <tr>
                    <td width = "100"><p>Enquiry:</p></td>
                    <td><input name = "p_enquiry" type = "text" 
                       id = "p_enquiry"></td>
                 </tr>


                 <tr>
                    <td width = "100"> </td>
                    <td> </td>
                 </tr>

                 <tr>
                    <td width = "100"> </td>
                    <td>
                       <input name = "add" type = "submit" id = "add" 
                          value = "Add Employee">
                    </td>
                 </tr>

              </table>
           </form>

        <?php
     }
  ?>

2 个答案:

答案 0 :(得分:0)

** 4列/字段的编辑 **

如果OP只需要4列(标题,名称,电子邮件,查询,又名.p_title,p_name,p_email,p_enquiry),则由于删除了join_date及其对应的值{{1来自查询:

NOW()

**的 ORIGINAL **

在不知道您收到的完全错误的情况下,我确实发现您的查询格式不正确:

$sql = "INSERT INTO contacts (p_name, p_email, p_enquiry, p_title) VALUES ('$p_name', '$p_email', '$p_enquiry', '$p_title')";

您遗漏(并要求)$sql = "INSERT INTO contacts ". "(p_name,p_email, p_enquiry, p_title join_date) ". "VALUES('$p_name','$p_email',$p_enquiry,$p_title NOW())"; $p_title之间的逗号,以及它们的列标识符,如下所示:

NOW()

我还删除了连接,因为它不是必需的。我很好奇$sql = "INSERT INTO contacts (p_name, p_email, p_enquiry, p_title, join_date) VALUES('$p_name', '$p_email', $p_enquiry, $p_title, NOW())"; $p_enquiry是字符串(听起来可能是这样),所以我很想将这些值包装在单引号中,就像这样(但仅限于适用):

$p_title

这个版本在语法方面没有问题。它们的值是字符串吗?或者它们是否按照列定义以数字为基础?

答案 1 :(得分:0)

首先,正如其他人所说,使用PDO,它非常重要,让生活更轻松。我认为你遇到的问题与p_title有关,p_title在执行insert语句时可能设置也可能不设置。此外,它似乎通常是一个字符串,但它没有用引号括起来。这将导致SQL语句出现问题。