PHP sql插入无法从html表单工作[重复]
Posted
技术标签:
【中文标题】PHP sql插入无法从html表单工作[重复]【英文标题】:PHP sql insert won't work from a html form [duplicate] 【发布时间】:2022-01-09 02:09:19 【问题描述】:由于某种原因,这个小 php 插入不起作用,有人可以帮忙吗?我一直在尝试从 html 表单中上传一些数据。这是一些代码
$dbServerName = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName = "kollegium_data";
$connection = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName);
if(isset($_POST['submit']))
$name = $_POST['teacher'];
$email = $_POST['postdate'];
$contact = $_POST['posttext'];
if($name !=''||$email !='')
mysql_query("INSERT INTO posts(teacher, postdate, posttext) VALUES ('$name', '$email', '$contact')");
echo "sikeres";
else
echo "sikertelen";
$connection->close();
<form action="insert.php" method="POST">
Neve: <input type="text" name="teacher" id="tanar" /><br/>
Jelenlegi dátum (év,hónap,nap): <input type="text" name="postdate" id="datum"/><br/>
Kiírandó szöveg (max. 3500 karakter): <input type="text" name="posttext" id="kiiras"/><br/>
<input type="submit">
</form>
【问题讨论】:
没有任何东西叫 submit 所以 isset 总是一个 no mysql_* 函数自 PHP 5.5.0 起弃用,并从 PHP 7.0.0 起删除。将您的代码切换为使用PDO 或mysqli。一定要使用准备好的语句和参数绑定,这样你再也不用担心引用问题了。另外,你不能混合使用 MySQL API,所以mysql_query
不能和mysqli_connect
一起工作
只是一个标记此关闭/重复的仅供参考。他从来没有问过mysql的问题,只是这里的一个用户注意到了。他问为什么它不插入,那是因为 HTML 问题。所以它并不是真正的 MYSQL 问题的重复。
【参考方案1】:
您没有创建 $_POST['submit'] 变量。
改变
<input type="submit">
到
<input type="submit" name='submit'>
【讨论】:
【参考方案2】:由于您使用mysqli_connect
,因此您必须使用mysqli_query
,其中第一个参数是$connection
:
mysqli_query(
$connection,
"INSERT INTO posts(teacher, postdate, posttext) VALUES ('$name', '$email', '$contact')"
);
你的代码也对SQL Injection
攻击开放,所以你需要使用准备好的语句:
$stmt = mysqli_prepare(
$connection,
"INSERT INTO posts(teacher, postdate, posttext) VALUES (?, ?, ?)"
);
mysqli_stmt_bind_param($stmt, "sss", $name, $email, $contact);
mysqli_stmt_execute($stmt);
【讨论】:
以上是关于PHP sql插入无法从html表单工作[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Ajax 无法正常工作。 PHP 无法在 SQL 中插入数据
通过html和php表单将数据插入MySQL数据库时遇到问题[重复]
如何使用我自己的脚本使用 php 和 sql 从表单中插入值?