尝试将mysqli_query插入我的数据库。没有收到错误

时间:2014-07-07 08:46:46

标签: php mysql database mysqli

我正在尝试制作一个插入我的数据库的非常基本的表单。我经历了无数个小时的工作。我觉得我理解每一行代码。我无法想象问题是什么。虽然我还没有在我的代码中设置错误检查,但我没有收到任何错误。希望我的问题很简单明了。

这是我的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);     
}
    ?>

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

3 个答案:

答案 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)

  1. mysqli_query电话后没有检查错误,当然您不会看到任何错误。
  2. 您很容易受到SQL注入攻击。使用mysqli准备的查询语法来避免这种情况。见How can I prevent SQL injection in PHP?
  3. 您的直接问题是您的查询显示... VALUES(foobar, baz),这是无效的。你错过了值的引号。但是,如果您正确使用准备好的语句,那将成为一个非问题,所以请忽略它。