将html表单中的数据插入sql数据库(html,php,sql)时未保存输入的值

Posted

技术标签:

【中文标题】将html表单中的数据插入sql数据库(html,php,sql)时未保存输入的值【英文标题】:Inputted values not saved while inserting data from html form into sql database (html,php,sql) 【发布时间】:2015-01-28 06:48:57 【问题描述】:

问题:insert.php 连接正常,但是当我在 html 表单上点击“保存”时,只会插入空值 ('')。我键入的文本(我试图插入)没有保存。某处没有建立连接并且数据丢失了,但我无法确定确切的位置。有什么帮助吗?

HTML 插入表单(收集 2 个参数“用户”和“线程”的数据)

<form action="insert.php" method="post">
user: <input type="text" name="user"><br>
thread: <input type="text" name="thread"><br>
<input type="submit" value="Save">
</form>

PHP代码连接SQL,插入输入值

<?php

$user = $_POST['user'];
$thread = $_POST['thread'];

$servername = "##.##.###";
$username = "harwoodjp";
$password = "~";
$dbname = "332";

//create connection
$conn = new mysqli($servername, $username, $password, $dbname);

//check connection
if ($conn->connect_error) 
    die("SQL (&#9746)<br/> " . $conn->connect_error);

echo "SQL (&#9745) <br/>";

$sql = mysql_connect($servername,$username,$password);
mysql_connect($servername,$username,$password);
mysql_select_db("332project");

//insert values
$insert_query = "INSERT INTO test1(user,thread) VALUES ('$user', '$thread')";
mysql_query($insert_query);

echo "<script>window.location='select.php'</script>"; //select.php displays the full table

//close MySQL
mysql_close($sql);
?>

【问题讨论】:

一些笼统的评论:似乎您连接了 3 次(1x new mysqli,2x mysql_connect)。您也不要转义表单输入。当我在用户字段中编写以下内容时,插入查询会是什么样子:', ''); DROP DATABASE DATABASE(); --(提示:它将删除您的整个数据库)。清理您的输入! :-) 另一句话:如果您只是尝试重定向,请使用header('Location: select.php'); die();。将它们用作您的最后几行代码。 【参考方案1】:

试试这个

<?php

$user = $_POST['user'];
$thread = $_POST['thread'];

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "db";

//create connection
$conn = mysql($servername, $username, $password, $dbname);

//check connection
if ($conn->connect_error) 
    die("SQL (&#9746)<br/> " . $conn->connect_error);

echo "SQL (&#9745) <br/>";

$sql = mysql_connect($servername,$username,$password);
mysql_select_db("db");

//insert values
$insert_query = "INSERT INTO test1(user,thread) VALUES ('$user', '$thread')";
mysql_query($insert_query);

echo "<script>window.location='select.php'</script>"; //select.php displays the full table

//close MySQL
mysql_close($sql);

?>

【讨论】:

感谢您清理它。不幸的是,即使使用此代码,问题仍然存在。 $insert_query 回显 'INSERT INTO test1(user,thread) VALUES ('', '')',这意味着用户和线程仍然注册为空值。 嘿,现在它对我有用。介意我问你到底改变了什么?长得很像…… ya..sure..你写mysql_connect($servername,$username,$password)这一行2次所以mysql混淆创建连接&你在某处使用mysql_*和某处mysqli_*..so意思是使用任何一个mysql_*mysqli_*【参考方案2】:

可能是因为default form posting method is GET。

要么将$_POST 更改为$_GET,要么将method="POST" 添加到表单标签中。

【讨论】:

您好,感谢您的评论。两种解决方案都没有奏效。猜猜问题出在其他地方? 把修改后的版本贴在最上面,让我们看看。 老实说,我看不出你所拥有的有什么问题。您必须通过查明失败的位置来调试您的代码。我会打印$user$thread$insert_query 来看看你得到了什么值。 (不要忘记注释掉 下一步:添加print_r($_POST);作为第一行。提交后得到什么? 不幸的是,我没有想法 :( 尝试查看网站上的similar questions。一定会有解决方案的。

以上是关于将html表单中的数据插入sql数据库(html,php,sql)时未保存输入的值的主要内容,如果未能解决你的问题,请参考以下文章

使用 flask_sqlalchemy 将 HTML 表单中的日期插入 SQlite 数据库

如何通过 PHP 将未知数量的 HTML 表单字段插入 MySQL?

尝试使用注册表单中的 PHP/Html 将数据输入 SQL 表

使用 html 表单将数据插入到 wordpress 表中

将 HTML 表单日期传递给 VB 变量以进行 SQL 插入

PHP sql插入无法从html表单工作[重复]