SQL语句不起作用,我在做什么错>>

时间:2018-06-25 12:05:45

标签: php sql database

我正在使用一个创建博客文章的表单创建一个管理面板。当我尝试将其插入数据库时​​,出现错误。这是我的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);

那我现在该怎么办?

2 个答案:

答案 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)

  1. 对于表列字段,请勿使用单引号或双引号。
  2. 以两次分号结束

代替:

$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')";