gpt4 book ai didi

php - 我的表单正在提交多个数据库条目,但我不希望它这样做

转载 作者:行者123 更新时间:2023-11-29 07:44:11 25 4
gpt4 key购买 nike

我有一个简单的 html 表单和一个 php 文件来执行数据库插入。我遇到的问题是,当我按下提交按钮时,我的数据库表收到同一提交的 3 个副本,而我只需要一份。下面是代码。

html:

<!DOCTYPE html>
<html>
<form action="demo.php" method="post">
<p>
Input 1: <input type="text" name="input1" />
<input type="submit" value="Submit" />
</p>
</form>
</html>

php:

<?php
define('DB_NAME', 'phpmyadminName');
define('DB_USER', 'phpmyadminUser');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

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

$db_selected = mysql_select_db(DB_NAME, $link);

if (!$db_selected){
die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}

$value = $_POST['input1'];

$sql = "INSERT INTO demo (input1) VALUES ('$values')";

if (!mysql_query($sql)){
die('Error: ' . mysql_error());
}

mysql_close();
?>

由于显而易见的原因,DB_NAME、DB_USER 和 DB_PASSWORD 都已更改,但代码确实有效。

它只是向数据库表提交了过多的表单数据副本。早在我上学的时候,我就遇到过这个问题,但问题似乎出在服务器端,而不是我们的代码。这里使用的服务器是我的,我可以完全控制它。如果服务器是错误的问题,我需要帮助来纠正这个问题(因为我这样做是为了学习如何管理这些工具,所以我除了基本级别的管理之外不知道更多)。

最佳答案

Kenneth,您在此处提供的代码确实需要一些工作。首先,请不要再使用mysql API。它已被弃用,在未来的 PHP 版本中将不再受支持,并且不安全。对于所有数据库操作,请使用 mysqliPDO API,最好使用准备好的语句。
其次,在没有先验证/清理它们的情况下,切勿将 INSERT $_POST$_GET 变量直接插入数据库,因为有人可能会删除您的数据或更糟糕的是你的整个数据库。 PHP 有许多函数可以使这变得非常简单,例如 ctype取决于数据类型。

也许在你的代码中尝试这样的事情:

if (!empty($_POST['input1'])) { //checks if data was received//
$value = $_POST['input1'];
mysql_real_escape_string($value);
$sql = "INSERT INTO demo (input1) VALUES ('$value')";
} else {
echo "form was not received";
exit;
}

我还注意到您的变量名称不同,已在上面更正。

编辑:
错误地对 PHP ctype 函数使用了错误的语法。

关于php - 我的表单正在提交多个数据库条目,但我不希望它这样做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28271663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com