PHP不在mySQL数据库中插入内容:文本,图像,任何内容

时间:2015-06-27 12:44:56

标签: php html mysql

所以这是我的困境,我一直在审查并试图在过去几天突破。我已经创建了一个基本的登录/注册PHP系统,它工作正常。我已经实现了一个显示帖子的博客系统。我写了一个添加帖子函数,它不会发布到数据库,也不会返回错误函数。

我真的不明白,因为我的注册系统工作并添加新用户,但“添加博客帖子”什么都不做。我可以从数据库添加,它显示正常,但没有在这里。

<?php
    error_reporting(E_ALL & ~E_NOTICE);
    session_start();

    if (isset($_SESSION['id'])) {

        $userId = $_SESSION['id'];
        $username = $_SESSION['username'];
    } else {
        header('Location: login.php');
        die();
    }

    if ($_POST['submit']) { 
        $title = strip_tags($_POST['title']);
        $subtitle = strip_tags($_POST['subtitle']);
        $content = strip_tags($_POST['content']);

        mysqli_query($dbCon, $userREQ3);
        $userREQ3 = " INSERT INTO `logindb`.`blog` 
        (`title`, `subtitle`, `content`) VALUES ('$title','$subtitle','$content')";

    }
?>

<!DOCTYPE html>
 <html>

   <head>

   </head>

   <body>
     Welcome, <?php echo $username; ?>, You are logged in. Your user id is <?php echo $userId; ?>.

    <a href="index.php">Index</a>
    <form action="logout.php">
        <input type="submit" value="Log me out!">
    </form>

    <form method="post" action="admin.php">
        Title: <input type="text" name="title"/><br>
        Subtitle: <input type="text" name="subtitle"/><br>
        <br>
        <br>
        Content: <textarea name="content"></textarea>
        <input type="submit" value="Write Post"/>
    </form>

   </body>
</html>

2 个答案:

答案 0 :(得分:3)

您的代码失败有两个原因。

  • 您的条件语句正在寻找名为&#34;提交&#34;
  • 的命名元素
  • 您在声明之前尝试执行。放置您的查询(mysqli_query())&#34; 位于&#34;值并执行mysqli_query($dbCon, $userREQ3) or die(mysqli_error($dbCon));

旁注:将if ($_POST['submit']) {改为if (isset($_POST['submit'])) {它会更好。

<input type="submit" value="Write Post"/>
<input type="submit" name="submit" value="Write Post"/>

SQL注入:

您目前的代码向SQL injection开放。使用mysqli with prepared statementsPDO with prepared statements

此外,代码正文中有变量,这可能会在初始页面加载时抛出未定义的变量x。

如上所述(在下面的评论中):确保您已连接到数据库并使用mysqli方法而不是其他API。

不同的MySQL API不会相互混合。从连接到查询使用相同的MySQL API。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。

是否成功查询:

要查看查询是否确实成功或失败,请检查错误并使用affected_rows

参考文献:

  

PHP不在mySQL数据库中插入内容:文字,图片,任何内容

如果您尝试使用图片,则需要在表单标记中包含有效的enctype。

取决于您想要为图像插入的方式/内容,这可能是一个因素。

如果您想要将图像作为路径插入是一回事,而是使用它&#34;作为图像&#34;,则说BLOB然后在大小上有限制;使用LONGBLOB,您必须在进入数据库之前转义该数据。

请教:

答案 1 :(得分:0)

首先尝试生成查询,然后执行...

$userREQ3 = " INSERT INTO `logindb`.`blog` 
(`title`, `subtitle`, `content`) VALUES ('$title', '$subtitle','$content')";


mysqli_query($dbCon, $userREQ3);