将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 (☒)<br/> " . $conn->connect_error);
echo "SQL (☑) <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 次(1xnew 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 (☒)<br/> " . $conn->connect_error);
echo "SQL (☑) <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 表