语法错误意外T_STRING

时间:2015-04-29 19:56:33

标签: php arrays mysqli foreach

我正在尝试创建一个将数据输入到我的数据库的表单,但是我在第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();
    }
}

1 个答案:

答案 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保留字冲突或包含特殊字符时才需要它们。