php - 通过 Web 表单将数据插入数据库

标签 php html mysql database

我一直在寻找问题的答案,但由于所有编程都各不相同,我似乎无法解决我的问题。我创建了一个 php 文件,它实际上连接到我的数据库。但是,当我尝试通过 php 网页将数据提交到数据库时,它不会通过。当我尝试将数据库中的信息显示到网页时,也会发生同样的情况。鉴于它实际上正在连接到数据库,我不确定问题是什么。感谢您的帮助,当您回答时,请尽可能地为我简化问题。另外,我已经三次检查了我的数据库名称和表名称,以确保它们与我的编码匹配。这是我的代码:

连接到数据库:

<?php

DEFINE ('DB_USER', 'root');
DEFINE ('DB_PSWD', '');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'art database');

$dbcon = mysqli_connect(DB_HOST, DB_USER, DB_PSWD, DB_NAME);

?>

将数据插入数据库的表单:

<?php

if (isset($_POST['submitted'])) {

    include('connect-mysql.php');

    $fname = $_POST['fname'];
    $lname = $_POST['lname'];
    $sqlinsert = "INSERT INTO users (first name, last name) VALUES ('$fname','$lname')";

    if (!mysqli_query($dbcon, $sqlinsert)) {
        die('error inserting new record');
        } //end of nested if

        $newrecord = "1 record added to the database";


} // end of the main if statement
?>

<html>
<head>
<title>Insert Data into DB</title>
</head>
<body>


<hl>Insert Data into DB</hl>

<form method="post" action="insert-data.php">
<input type="hidden" name="submitted" value="true"/>
<fieldset>
    <legend>New People</legend>
    <label>First Name:<input type="text" name="fname" /></label>
    <label>Last Name:<input type="text" name="lname" /></label>
</fieldset>
<br />
<input type="submit" value="add new person" />
</form>
<?php
echo $newrecord;
?>

</body>
</html>

最佳答案

它不起作用的原因是您的列/查询中有空格。

INSERT INTO users (first name, last name)

将它们用反引号括起来,如下所示:

INSERT INTO users (`first name`, `last name`)

不建议在列名或表中使用空格。

尝试改用下划线,或者删除空格并对数据库中的列进行适当的更改(如果这样做的话)。

您还应该考虑使用:

('". $fname . "','". $lname . "')

而不是('$fname','$lname')

我也在质疑这个=> DEFINE ('DB_NAME', '艺术数据库');

artdatabase 之间有一个空格。如果是这种情况,并且实际上是您为数据库指定的名称,请将其重命名为 art_database 并使用 DEFINE ('DB_NAME', 'art_database');相反。

并使用以下内容来增强保护:

$fname = mysqli_real_escape_string($dbcon,trim($_POST['fname']));
$lname = mysqli_real_escape_string($dbcon,trim($_POST['lname']));

关于保护的有趣文章:

<小时/>

编辑:(选项)

选项 1,在 2 个文件中:

首先,将列重命名为 firstnamelastname 并使用以下代码并将文件命名为 insert-data.php

数据库查询文件(insert-data.php)

<?php

if (isset($_POST['submit'])) {

    include('connect-mysql.php');

$fname = mysqli_real_escape_string($dbcon,trim($_POST['fname']));
$lname = mysqli_real_escape_string($dbcon,trim($_POST['lname']));

    $sqlinsert = "INSERT INTO `users` (firstname, lastname) VALUES ('" . $fname . "','" . $lname . "')";

    if (!mysqli_query($dbcon, $sqlinsert)) {
        die('error inserting new record');
        } //end of nested if

        echo "1 record added to the database";


} // end of the main if statement
?>

然后在一个单独的文件中,您的 HTML 表单;将其命名为 db_form.php 例如:

HTML 表单 (db_form.php)

<html>
<head>
<title>Insert Data into DB</title>
</head>
<body>
<hl>Insert Data into DB</hl>

<form method="post" action="insert-data.php">
<input type="hidden" name="submitted" value="true"/>
<fieldset>
    <legend>New People</legend>
    <label>First Name:<input type="text" name="fname" /></label>
    <label>Last Name:<input type="text" name="lname" /></label>
</fieldset>
<br />
<input type="submit" name="submit" value="add new person" />
</form>
</body>
</html>

新编辑 - 选项 2,全部在一个文件中:

在一个页面中使用它,不添加任何其他内容:

<?php

if (isset($_POST['submit'])) {

if(empty($_POST['fname'])) {
die("Fill in the first name field.");
}

if(empty($_POST['lname'])) {
die("Fill in the last name field.");
}

    include('connect-mysql.php');

$fname = mysqli_real_escape_string($dbcon,trim($_POST['fname']));
$lname = mysqli_real_escape_string($dbcon,trim($_POST['lname']));

    $sqlinsert = "INSERT INTO `users` (firstname, lastname) VALUES ('" . $fname . "','" . $lname . "')";

    if (!mysqli_query($dbcon, $sqlinsert)) {
        die('error inserting new record');
        } //end of nested if

        echo "1 record added to the database";


} // end of the main if statement
?>

<html>
<head>
<title>Insert Data into DB</title>
</head>
<body>


<hl>Insert Data into DB</hl>

<form method="post" action="">
<fieldset>
    <legend>New People</legend>
    <label>First Name:<input type="text" name="fname" /></label>
    <label>Last Name:<input type="text" name="lname" /></label>
</fieldset>
<br />
<input type="submit" name="submit" value="add new person" />
</form>
<?php
echo $newrecord;
?>

</body>
</html>

关于php - 通过 Web 表单将数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20308157/

相关文章:

php - 在 mailable/markdown Laravel 中传递变量

javascript - 我只想在字段中给出数字是否可以不进行任何验证

从 phpmyadmin 导出时 MySql GROUP_CONCAT 失败

mysql - phpMyAdmin - 查询执行时间

php - 如何防止 PHP 中的 SQL 注入(inject)?

php - 显示没有产品详细信息的空白格式页面

php - Selenium 测试用例返回 Process finished with exit code 0

html - 为什么 float div 后有空格,如何删除它?

php - 显示来自 blob 字段 php 的相同图像

javascript - 使用 HTML 下拉菜单分配 JavaScript 变量(用户选择)