我正在尝试制作一个插入我的数据库的非常基本的表单。我经历了无数个小时的工作。我觉得我理解每一行代码。我无法想象问题是什么。虽然我还没有在我的代码中设置错误检查,但我没有收到任何错误。希望我的问题很简单明了。
这是我的connect.php文件。 $ con是我与新mysqli的连接。 talk是我的数据库。
<?php
$con= new mysqli("localhost","root","","talk");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
这是我的html的相关表单部分。标题和内容以及我想要插入数据库的两条信息。我包括connect.php。 textarea应该通过form =“talkform”链接到表单。这个表单使用action =“process.php”,我将在下面介绍。
<?php
include 'connect.php';
?>
<center>
<h1>/talk/</h1>
<form method="post" action="process.php" id="talkform">
<input type="text" name="title"/><br><br>
<textarea form="talkform" rows="10" cols="80" name="content"></textarea><br>
<input type="submit" value="talk" />
</form>
这是我的process.php。我也在这个文件中包含了connect.php。不确定这是否多余并导致问题,但我不这么认为。我也使用了你看到的$ _SERVER ['REQUEST_METHOD']位,这是我从教程中学到的。不确定是否有更好的方法来实现这一目标。我把一切都变成了变数。当我处理错误时,它就在mysqli_query行上。我最怀疑的是罪魁祸首。
<?php
include 'connect.php';
if($_SERVER['REQUEST_METHOD'] = 'POST')
{
$title = $_POST['title'];
$content = $_POST['content'];
$operation = "INSERT INTO
main(title, content)
VALUES($title, $content);";
$result = mysqli_query($con, $operation);
}
?>
我希望我没有遗漏任何东西。我一直在努力让数据库工作一周以上。这是一个痛苦的过程,虽然我学到了很多,但我没有得到任何工作。请帮忙,谢谢。
答案 0 :(得分:1)
使用==
运算符进行比较
if($_SERVER['REQUEST_METHOD'] == 'POST')
并引用您的查询变量
$operation = "INSERT INTO main(title, content) VALUES('$title', '$content');";
所以代码看起来像转义字符串
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$title = mysqli_real_escape_string($_POST['title']);
$content = mysqli_real_escape_string($_POST['content']);
$operation = "INSERT INTO main(title, content) VALUES('$title', '$content');";
$result = mysqli_query($con, $operation);
}
使用empty()
或isset()
答案 1 :(得分:0)
第4行:if($_SERVER['REQUEST_METHOD'] == 'POST')
如果使用if (isset($_POST['title']))
发送表单,最好直接签出。
当您致电mysqli_error()
时,您会发现我们尝试插入没有引号的字符串(并且您不会转义输入 - 寻找SQl注入)。
$operation = "INSERT INTO main(title, content) VALUES('" . mysqli_real_escape_string($con, $title) . "', '" . mysqli_real_escape_string($con, $content) . "')";
答案 2 :(得分:0)
mysqli_query
电话后没有检查错误,当然您不会看到任何错误。... VALUES(foobar, baz)
,这是无效的。你错过了值的引号。但是,如果您正确使用准备好的语句,那将成为一个非问题,所以请忽略它。