Php 查询不工作-插入到
所以我最近开始学习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
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 ieNOW()
函数有本机支持。是的,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);