Php 正在尝试将mysqli_查询插入到我的数据库中。不接收错误

Php 正在尝试将mysqli_查询插入到我的数据库中。不接收错误,php,mysql,database,mysqli,Php,Mysql,Database,Mysqli,我试图制作一个非常基本的表单,插入到我的数据库中。我花了无数个小时来做这个。我觉得我理解每一行代码。我无法想象问题出在哪里。我没有收到任何错误,尽管我还没有在代码中设置错误检查。希望我的问题简单明了 这是我的connect.php文件$con是我与新mysqli的连接。talk是我的数据库 <?php $con= new mysqli("localhost","root","","talk"); if (mysqli_connect_errno()) { echo "Failed to

我试图制作一个非常基本的表单,插入到我的数据库中。我花了无数个小时来做这个。我觉得我理解每一行代码。我无法想象问题出在哪里。我没有收到任何错误,尽管我还没有在代码中设置错误检查。希望我的问题简单明了

这是我的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。文本区域应通过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。不确定这是否是多余的,是否会造成问题,但我不这么认为。我还使用了这个$\u服务器['REQUEST\u METHOD']位,这是我从一个教程中学习的。不确定是否有更好的方法来实现这一点。我把一切都放入变量中。当我处理错误时,它都在mysqli_查询行上。我最强烈的怀疑是那是罪魁祸首

 <?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);     
}
    ?>


我希望我没有遗漏任何东西。一个多星期以来,我一直在努力让数据库正常工作。这是一个痛苦的过程,虽然我学到了很多,但我没有得到任何工作。请提供帮助,谢谢。

使用
==
运算符进行比较

 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()
第4行:
如果($\u服务器['REQUEST\u方法']='post'),则最好使用检查post值是否存在。

更好的方法是使用
if(isset($\u POST['title'))
直接检查表单是否已发送

当您调用
mysqli\u error()
时,如果您尝试插入不带引号的字符串(并且您不会转义输入,请查找SQl注入),您会发现我们的错误

  • 在调用
    mysqli\u查询后,您没有检查错误,当然您不会看到任何错误
  • 您很容易受到SQL注入的攻击。使用mysqli准备好的查询语法来避免这种情况。看
  • 您当前的问题是您的查询读取
    。。。值(foobar、baz)
    ,无效。值周围缺少引号。然而,如果你正确地使用准备好的语句,这将成为一个不成问题,所以忽略它

  • 将查询更改为
    “插入到主(标题、内容)值(““$title.”,“$content.””);“
    如果($\u服务器['REQUEST\u方法']='POST')
    将“POST”分配给变量,则将其更改为使用比较
    =
    认为Different完全正确。上帝啊,我充满了喜悦。我确实花了很多时间去摆弄那些引号和句号,但没能弄对。有人能解释一下它们是如何工作的以及如何使用它们吗?
    $operation = "INSERT INTO main(title, content) VALUES('" . mysqli_real_escape_string($con, $title) . "', '" . mysqli_real_escape_string($con, $content) . "')";