当前位置: 首页 > 知识库问答 >
问题:

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

尉迟远
2023-03-14

我正在尝试从我创建的一个简单的联系人表单中插入数据。我正在使用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个答案

温智明
2023-03-14

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

您不使用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.
 类似资料:
  • 我忙于一项学校作业,我有一个由三个表组成的基本access数据库。Book、Reader和BookRated,其中as BookRated是交集表,主键userName来自Reader和ISBN来自Book组成BookRated的复合主键(作为外键)。 我正试图将信息插入书签表中,但出现以下错误

  • 问题内容: 我有以下要存储在数据库中的数组… 我试图搜索谷歌上如何做到这一点,我所能找到的是表明插入数组之前需要对数组进行拆分的信息。它是否正确?抱歉,天真,对于php来说还很陌生。 问题答案: 您不能直接将数组插入 mysql, 因为 mysql 无法 识别php 数据类型。 Mysql 只了解 SQL 。因此,要将数组插入mysql数据库,必须将其转换为sql语句。可以手动或通过库来完成。输出

  • 本文向大家介绍Android 将数据插入数据库,包括了Android 将数据插入数据库的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 我使用Google Maps API制作了一个非常简单的页面,其中有几个字段,用户将在其中放置一些数据。看起来像- http://aiworker2.usask.ca/marker_field_db.html 我要做的是使用javascript / Ajax将数据存储到MySQL数据库中。我发现了几个使用Jquery的示例。我是这个javascript / Ajax / Jquery平

  • 我有一个postgres数据库,包含一个名为“users”的表。该表有四个字段: id BIGSERIAL主键 显示名称文本不为空, 电子邮件文本不为空 电话号码文本 我想从dart代码中添加数据。我的尝试是这样的: 问题是我遇到了一个例外 (PostgreSQLSeverity.error 42601:在“display_name”处或附近出现语法错误)

  • 我是mysql和php的初学者。在这个问题上陷入了困境。不知道问题出在哪里。但是如果我直接执行insert查询,它就会被执行,而如果我从用户那里接受它,它就不会被执行(代码中显示了这一点)。可能问题出在我用来检索用户提交的值的$\u POST[]方法上。我已经提交了两个代码,addbooks。php(用户提交值的表单)和add。php(插入数据库)。