我尝试做一个可以将数据插入数据库的表单。在我插入虚拟数据后,它就会出来。
您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以获得正确的语法
这个错误让我陷入困境。我的数据库没有插入任何记录
<?php
$db = "assignment";
$table = "column";
$conn = mysqli_connect("localhost","root","");
mysqli_select_db($conn,$db);
$Title = $_POST['title'];
$Author = $_POST['author'];
$Country = $_POST['country'];
$Date = $_POST['date'];
$Abstract = $_POST['abstract'];
$Problem = $_POST['rproblem'];
$Aim = $_POST['raim'];
$Objectives = $_POST['robjective'];
$Type = $_POST['rstudies'];
if(isset($_POST['rmethod'])){
$method = implode(",",$_POST['rmethod']);
}else{
$method = "";
}
$sql = "INSERT INTO '$table' (title,author,country,date,abstract,rproblem,raim,robjective,rstudies,rmethod)
VALUES ('$Title','$Author,'$Country','$Date','$Abstract','$Problem','$Aim','$Objectives','$Type','$method')";
mysqli_query($conn,$sql);
if (!mysqli_query($conn,$sql)){
die('Error: ' . mysqli_error($conn));
}else{
echo "Data Added";
}
mysqli_close($conn);
?>
答案 0 :(得分:2)
您在使用reserved word时将$table
变量设置在单引号内,column
用于表名$table = "column";
在它周围使用反引号,如下所示:
INSERT INTO `$table`
要么这样做,要么给你的桌子另一个名字。
此处还缺少引用'$Author,
,'$Author',
此外,您可以删除mysqli_query($conn,$sql);
,因为您已经在使用
if (!mysqli_query($conn,$sql))
<强>脚注:强>
您目前的代码向SQL injection开放。我强烈建议您使用prepared statements或PDO prepared statements。
答案 1 :(得分:0)
试试这个
$sql = "INSERT INTO $table (title,author,country,date,abstract,rproblem,raim,robjective,rstudies,rmethod)
VALUES ('$Title','$Author','$Country','$Date','$Abstract','$Problem','$Aim','$Objectives','$Type','$method')";
表名或列名必须用反向标记(`)括起来,而不是用单引号或双引号括起来。否则不要将它们包装起来。只需像上面那样尝试。如果你使用保留关键字作为表名或列名,那么你必须将它们包含在后面。它最好不要使用任何保留关键字。所以如果你可以更改名称,然后它将是您的最佳选择。您在查询中使用两个保留关键字。您的表名和日期列。两者都是关键字
您可以check my answer here了解更多
答案 2 :(得分:0)
关注您在'
$author
的其他答案
$sql = "INSERT INTO `$table` (title,author,country,date,abstract,rproblem,raim,robjective,rstudies,rmethod)
VALUES ('$Title','$Author','$Country','$Date','$Abstract','$Problem','$Aim','$Objectives','$Type','$method')";
还可以更好地用来替换
mysqli_query($conn,$sql);
if (!mysqli_query($conn,$sql)){
到
$result = mysqli_query($conn,$sql);
if (!$result){
否则您的查询将执行两次。