提问者:小点点

使用PHP将数据插入数据库时出错


我正在尝试从我创建的一个简单的联系人表单中插入数据。我正在使用phpMyAdmin

下面是PHP(出于安全考虑,我删除了define语句,但我可以毫无问题地建立到数据库的链接。)

<?php
if (isset($_POST['submitted'])){
    define('DB_NAME', '');
    define('DB_USER', '');
    define('DB_PW', '');
    define('DB_HOST', '');

    $link = mysqli_connect(DB_HOST, DB_USER, DB_PW, DB_NAME);

    if(!$link){
        die('Test Connection Failed 1: ' . mysql_error());
    }

    //Name
    $FName = $_POST['FName'];
    $FName = mysqli_real_escape_string($link, $FName);
    $LName = $_POST['LName'];
    $LName = mysqli_real_escape_string($link, $LName);

    //Phone
    $Phone1 = $_POST['Phone1'];
    $Phone2 = $_Post['Phone2'];
    $Phone3 = $_Post['Phone3'];
    $Phone = $Phone1.$Phone2.$Phone3;
    $Phone = mysqli_real_escape_string($link, $Phone);

    //Address
    $Street = $_POST['Street'];
    $Street = mysqli_real_escape_string($link, $Street);
    $City = $_POST['City'];
    $City = mysqli_real_escape_string($link, $City);
    $Zip = $_POST['Zip'];
    $Zip = mysqli_real_escape_string($link, $Zip);
    $Country = $_POST['Country'];
    $Country = mysqli_real_escape_string($link, $Country);

    //Message
    $Message = $_POST['Message'];
    $Message = mysqli_real_escape_string($link, $Message);

    //Email
    $Email = $_POST['Email'];
    $Email = mysqli_real_escape_string($link, $Email);


    $sqlInsert = "INSERT INTO phpmy1_belairfinishing_com.Contact (ID, FName, LName, Phone, Street, City, State, Country, Zipcode, Email, Message) VALUES (NULL, '".$FName."', '".$LName."', '".$Phone."'', '".$Street."'', '".$City."'', '".$State."'', '".$Country."'', '".$Zipcode."'', '".$Email."'', '".$Message."')";

    if(!mysqli_real_query($link, $sqlInsert)){
        die('SLQ Insert Statement Failed: ' . mysql_error());
    } else {
        echo "Posted To Database";  
        mysqli_close($link);    
    }

} //End of ISSET if statement

?>

当有人点击论坛上的submit按钮后,代码就会运行,据我所知,这是正常工作的。

该错误发生在php代码的末尾。正在输出“SLQ Insert Statement FAILD”,但未发布mysql错误。

if(!mysqli_real_query($link, $sqlInsert)){
            die('SLQ Insert Statement Failed: ' . mysql_error());
        }

我的数据库/表的设置如下:数据库名=phpmy1_belairfinishing_com表名=Contact列名与insert语句中的列名完全相同。

如有任何帮助,我们将不胜感激!

编辑:下面是表结构,如果有助于列类型
ID tinyint(4)
FName varchar(75)
LName varchar(75)
电话int(11)
街道文本
城市文本
州文本
国家文本
邮编int(10)
电子邮件varchar(75)
消息文本

我尝试输入的值是NULL Tim Smite 111-111-1111 1 random street random city random state United States randomemail@gmail.com randomMessage


共1个答案

匿名用户

顺便说一下,只是一个想法。

您不使用mysqli_stmt_bind_param

http://php.net/manual/en/mysqli-stmt.bind-param.php

但请使用mysqli_real_escape_string

http://php.net/manual/en/function.mysql-real-escape-string.php

来清理您的VLUE(但mysqli_stmt_bind_param确实是更好的实践)。

所以请在doc中查看此通知:

**Caution**
Security: the default character set

The character set must be set either at the server level, or with the API function mysql_set_charset() for it to affect mysql_real_escape_string(). See the concepts section on character sets for more information.