我正在尝试创建一个将数据输入到我的数据库的表单,但是我在第56行遇到语法错误意外的T_String。有问题的行是我的SQL插入语句,但我找不到我的错误。我的代码包含在下面,任何帮助将非常感激。
foreach ($postNameArr as $postName){
if (array_key_exists($postName, $_POST)){
$w = "INSERT INTO tblContent('PageHeading', 'SubHeading', 'Content', 'PageTitle', 'MetaDescription', 'MetaKeywords') VALUES (["ph"],["sh"],["pc"],["pt"],["md"],["mk"])";
//if it works...
if ($conn->query($w) === TRUE) {
echo "New record created successfully";
}
//error handling
else {
echo "Error: " . $w . "<br>" . $conn->error."');";
}
$conn->close();
}
}
答案 0 :(得分:4)
VALUES
子句中的引号结束字符串文字。但是,不是展示如何解决这个问题,最好的方法是使用准备好的查询。
$stmt = $conn->prepare("INSERT INTO tblContent(`PageHeading`, `SubHeading`, `Content`, `PageTitle`, `MetaDescription`, `MetaKeywords`) VALUES (?, ?, ?, ?, ?, ?)";
$stmt->bind_param("ssssss", $_POST["ph"],$_POST["sh"],$_POST["pc"],$_POST["pt"],$_POST["md"],$_POST["mk"]);
$stmt->execute();
此外,应该围绕表名和列名引用的引号是反引号,而不是单引号或双引号 - 这些都是字符串文字。但是你根本不需要它们,只有在名称与MySQL保留字冲突或包含特殊字符时才需要它们。