Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查询不工作-插入到_Php_Mysql_Insert - Fatal编程技术网

Php 查询不工作-插入到

Php 查询不工作-插入到,php,mysql,insert,Php,Mysql,Insert,所以我最近开始学习PHP,现在我正试图将代码输入到我的数据库中。 用户通过表单输入数据 这是我的密码: if(isset($_POST['submit'])) { $blogtitle = $_POST['blogTitle']; $blogcategory = $_POST['blogCategory']; $blogcontent = $_POST['blogContent']; // aanmaak date van de blog $blogda

所以我最近开始学习PHP,现在我正试图将代码输入到我的数据库中。 用户通过表单输入数据

这是我的密码:

if(isset($_POST['submit'])) {

    $blogtitle = $_POST['blogTitle'];
    $blogcategory = $_POST['blogCategory'];
    $blogcontent = $_POST['blogContent'];
    // aanmaak date van de blog
    $blogdate = date("d/m.Y"); 

    // Checkt of alle velden zijn ingevuld
    if (!empty($blogtitle) && !empty($blogcategory) && !empty($blogcontent)) {

        //echo "je zit nu bij de query";

        $addBlogQuery = mysql_query("INSERT INTO blog (blog_ID, blog_title, blog_category, blog_content, blog_date)
                                     VALUES (NULL, $blogtitle, $blogcategory, $blogcontent, blogdate )");

        if ($addBlogQuery) {
            echo "blog added successfully";
        }
        else {
            echo "something went wrong";
        }
    }
    else {
        $this->notFilledErrorAction();
    }

}
出于某种原因,它没有在我的数据库中添加任何数据。我与数据库的连接工作正常,我在查询中没有发现错误


有人看到这段代码中有错误吗?或者可以帮我解决问题吗?

您需要用单引号(
)括起字符串、日期和日期时间值

而且您还没有将其包含在SQL中

请将SQL修改为:

$addBlogQuery = mysql_query("INSERT INTO blog (blog_ID, blog_title, blog_category, blog_content, blog_date)
                                     VALUES (NULL, '$blogtitle', '$blogcategory', '$blogcontent', 'blogdate' )");

Mysql仅支持以下日期格式:

YYYY-mm-dd
但是你的代码有不同的格式

$blogdate = date("d/m.Y");
请尝试以下操作:

$blogdate=date(“Y-m-d”)

您已经传递了ID null,我认为您已经选择ID作为主键。主键不能为空。如果您的ID字段支持自动递增,则无需传递任何内容

$addBlogQuery = mysql_query("INSERT INTO blog (blog_title, blog_category, blog_content, blog_date)
                                     VALUES ($blogtitle, $blogcategory, $blogcontent, blogdate )");
希望它能起作用

$addBlogQuery = mysql_query("INSERT INTO blog (blog_title, blog_category, blog_content, blog_date) VALUES ($blogtitle, $blogcategory, $blogcontent, blogdate )");

您的错误似乎是通过
NULL
插入
blog\u id
的值<代码>博客id
列是主键。如果通过
NULL
插入
blog\u id
,则数据无法推送到数据库。由于
blog\u id
是主键,因此不需要手动插入
blog\u id
。它将自动插入。

您的
INSERT
语句中有语法错误:

    $addBlogQuery = mysql_query("INSERT INTO blog (blog_ID, blog_title, blog_category, blog_content, blog_date)
                                 VALUES (NULL, $blogtitle, $blogcategory, $blogcontent, blogdate )");
                                       You are missing a $ here------------------------^
您还需要将变量包装在
单引号中:

    $addBlogQuery = mysql_query("INSERT INTO blog (blog_ID, blog_title, blog_category, blog_content, blog_date)
                                 VALUES (NULL, '$blogtitle', '$blogcategory', '$blogcontent', '$blogdate' )");

此外,mysql_*API现在已被弃用。请看红色的大盒子。您应该现在就开始使用MySQLi或PDO,因为它仍然比较容易更改。

请查看下面的更改,然后重试:

$blogdate = date("Y-m-d"); 
$addBlogQuery = mysql_query("INSERT INTO `blog` (`blog_title`, `blog_category`, `blog_content`, `blog_date`)
                                 VALUES ('$blogtitle', '$blogcategory', '$blogcontent', '$blogdate' )");

使用更安全的方式,使用PDO-停止使用
MYSQL.*
它已被弃用 PDO会自动转义,您不需要使用mysql\u real\u escape\u字符串

<?php
 $user="root";
  $pass="";
  $db = new PDO('mysql:host=hostname;dbname=databasename', $user, $pass); //establish new connection
$sql ="INSERT INTO blog (blog_ID, blog_title, blog_category, blog_content, blog_date)
                                     VALUES (NULL, ?, ?, ?, ?)";
try{
$stmt = $db->prepare($sql);
$stmt->execute(array($a, $b, $c, $d));
if($stmt->rowCount()>0){
//done
}
}catch(PDOException $e){
echo $e->getMessage();
?>

试试下面的查询,不需要使用php
date
函数mysql本机支持日期和时间函数

INSERT INTO blog
(`title`, `category`, `content`, `date`, `id`)
VALUES
('Title here', 'category here','blog content here', NOW(), 1);

下面是SQL测试

尝试将变量(在查询中)包装到
ssiindicate:停止使用不推荐的
mysql.*
函数。改用MySQLi或PDO。试试这个:
echo“出错了”。mysql_error()旁注:您的代码受到SQL注入攻击,因为您直接允许在查询中插入POST值。请尝试
echo mysql_error(),而不是回显“发生了什么事”。修复“blogdate”附近查询中的语法错误这修复了我的问题!完全忘记了“。。谢谢!这不是问题的解决办法。但这对我来说是新信息,谢谢!!=)为什么要使用
date
功能?您认为值得吗?mysql对date time ie
NOW()
函数有本机支持。是的,blog\u ID是我的主键。但你是说我不必给它“NULL”来自动获取它的id?现在它可以正常工作,每次都自动添加ID!这实际上解决了我的问题!从这个错误中学到了很多!不会很快忘记单引号!=)不用担心,但请认真地停止使用mysql\u查询。开始使用不推荐使用的接口是个坏主意,PDO或MySQLi会更好。它们还将帮助您防止代码中的SQL注入漏洞。我在回答中提供的链接中有一些信息。
INSERT INTO blog
(`title`, `category`, `content`, `date`, `id`)
VALUES
('Title here', 'category here','blog content here', NOW(), 1);