我正在使用一个创建博客文章的表单创建一个管理面板。当我尝试将其插入数据库时,出现错误。这是我的SQL语句:
INSERT INTO blog_posts ('title', 'author', 'tags', 'category', 'body') VALUES ('$title', '$author', '$tags', '$category', '$body');
我在做什么错? 完整代码:
$servername = "host";
$username = "username";
$password = "password";
$dbname = "dbname";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$title = $_POST['title'];
$author = $_POST['author'];
$tags = $_POST['tags'];
$category = $_POST['category'];
$body = $_POST['editor1'];
// sql to insert a record
$sql = "INSERT INTO blog_posts ('title', 'author', 'tags', 'category', 'body') VALUES ('$title', '$author', '$tags', '$category', '$body');";
if (mysqli_query($conn, $sql)) {
echo "Succes";
} else {
echo "Error";
}
mysqli_close($conn);
那我现在该怎么办?
答案 0 :(得分:0)
显而易见的一件事(如注释中所述)是您在字段名称周围使用了引号,引号是为字符串保留的,而不是字段/列的名称,因此您可以使用它;
INSERT INTO blog_posts ('title', 'author', 'tags', 'category', 'body') VALUES
应该是;
INSERT INTO blog_posts (`title`, `author`, `tags`, `category`, `body`) VALUES
以上使用反引号,您可以丢弃这些反引号,但要注意MySQL中的特殊词
还要注意-您对SQL注入攻击持开放态度,可以使用prepared statements,这是最好的,但是还有其他两个选择;
根据我的评论,像这样的东西,通常是适当的(有用的),利用提供给您的调试工具。
在这种情况下,mysqli_error对您(以及我们)很有用,因为它可以很好地指示出哪里出了问题/在哪里
答案 1 :(得分:-8)
代替:
$sql = "INSERT INTO blog_posts ('title', 'author', 'tags', 'category', 'body') VALUES ('$title', '$author', '$tags', '$category', '$body');";
尝试一下
$sql = "INSERT INTO blog_posts (`title`, `author`, `tags`, `category`, `body`) VALUES ('$title', '$author', '$tags', '$category', '$body')";