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 将 DATETIME 插入 SQL [重复]

如何使用我自己的脚本使用 php 和 sql 从表单中插入值?

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

将数据从 html 页面插入到 php 表单中,就像自动填充值一样