PHP&;MYSQL博客系统

PHP&;MYSQL博客系统,php,mysql,Php,Mysql,大家好,我对博客的php代码有问题。。。我创建了mysql数据库,看起来是这样的 当我按下submit按钮时,一切都正常,除了它不想将我写入输入的内容插入博客数据库 以下是php代码: <?php include 'dbconfig.php'; if(isset($_POST['submit'])){ $_title = $_POST['title']; $_category = $_POST['category']; $_content = $_POST['content']; $s

大家好,我对博客的php代码有问题。。。我创建了mysql数据库,看起来是这样的

当我按下submit按钮时,一切都正常,除了它不想将我写入输入的内容插入博客数据库

以下是php代码:

<?php
include 'dbconfig.php';

if(isset($_POST['submit'])){
$_title = $_POST['title'];
$_category = $_POST['category'];
$_content = $_POST['content'];

$sql = "INSERT INTO `blog`('title', 'category', 'content') VALUES ('$_title', '$_category', '$_content'))";
}else{
?>

<form action="post.php" method="post">
<p>Title: <input name="title" type="text" size="50"/></p>
<p>Category: <input name="category" type="text" size="50"/></p>
<p>Content: <textarea name="content" maxlength="50" placeholder="Content" type="text"></textarea></p>
<input type="submit" name="submit" value="Post"/>


</form>
<?php
}
?>

您实际上并没有执行查询,因此解决方案很简单-只需执行它即可

从评论中可以看出,您正在使用PDO,因此您只需要

$db_con->query($sql);
也就是说,这很容易受到SQL注入的影响,所以我建议您使用一个准备好的语句,使您的执行像这样

$stmt = $db_con->prepare("INSERT INTO `blog`(`title`, `category`, `content`) VALUES (:title, :category, :content)");
$stmt->execute(array("title" => $_title, "category" => $_category, "content" => $_content));
工具书类

“一切正常,但……”——那么一切都不正常了?;-)撇开玩笑不谈,您实际上并没有执行查询。
dbconfig.php
中有什么API?执行在哪里?其中有些东西可能会使应用程序重新启动。切勿将用户输入直接插入到查询中,请在查询之前清除它们。您还没有运行您刚刚生成的查询。@Qirel
致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在/home/a3584167/public_html/post.php:92堆栈跟踪:#0/home/a3584167/public_html/post.php(92):PDOStatement->execute(Array)#1{main}中第1行“title”、“category”、“content”)值('233242342”、“324332”、“324234')附近使用的正确语法在第92行的/home/a3584167/public_html/post.php中,我添加了like u saidAh,我盲目地复制了上面的查询,在查询中的列周围使用引号
,这应该是反勾
`
。现在修好了。你也可以把勾号去掉,因为这些名字都不是关键字/保留的。@Oirel-ye-ye我看到了,我以前也修复过,但仍然说<代码>未捕获异常“PDOException”,带有消息“SQLSTATE[42000]:语法错误或访问冲突:1065查询为空,位于/home/a3584167/public_html/post.php中。php:85堆栈跟踪:#0/home/a3584167/public_html/post.php(85):PDO->Query(“”)在/home/a3584167/public_html/post.php第85行抛出(
您不需要
Query()
当您使用
prepare()
时。所以我建议你只把我答案的第二部分(prepare/execute)放在这里,而不是任何
query()
。这与你发表的第一条评论完全相同——我已经解释过了:在列名周围加引号。我用那个愚蠢的错误修正了我的答案,所以你可以直接使用它。
$stmt = $db_con->prepare("INSERT INTO `blog`(`title`, `category`, `content`) VALUES (:title, :category, :content)");
$stmt->execute(array("title" => $_title, "category" => $_category, "content" => $_content));