连接到数据库时出现MariaDB错误消息错误:数据库状态[42000]:语法错误或访问冲突:1064

wnvonmuf  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(166)

我正在做一个项目,我有一个注册表,我试图发送到MariaDB数据库来存储注册表的值。我有一个例子,从我的教授,我已经复制了它的大部分,只是改变了一些值,我需要绑定。以下两个文件通过一个php文件连接,但是当用户提交正确的输入时,我遇到了一个错误消息(第4行在下面标出):
数据库状态[42000]:语法错误或访问冲突:1064 1064您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在第4行“”附近使用的正确语法
我在提交后附加了一张我的网页图片,并得到了一个错误。第一个“connectionInfo.php”文件包含数据库名称和密码的变量:

<?php
    session_start();
    $serverName = "localhost";
    $dbname = "project";
    $dbuserName = "root";
    $dbpassword = "";
?>

下一个文件“insertValidData.php”包含访问数据库并向数据库发送信息的主代码:

<?php
    if($isValid){
        try{
            $conn = new PDO ("mysql:host=$serverName;dbname=$dbname", $dbuserName, $dbpassword);// line 4

            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            $sql = $conn->prepare("INSERT INTO registration (userName, password, firstName, lastName, address1, address2, city, state, zipCode, phone, email, gender, maritalStatus, dateOfBirth)
             VALUES (:userName, :password, :firstName, :lastName, :address1, :address2, :city, :state, :zipCode,:phone, :email, :gender, :maritalStatus, :dateOfBirth");

            $sql->bindParam(':userName', $userName);
            $sql->bindParam(':password', $password);
            $sql->bindParam(':firstName', $firstName);
            $sql->bindParam(':lastName', $lastName);
            $sql->bindParam(':address1', $address);
            $sql->bindParam(':address2', $address2);
            $sql->bindParam(':city', $city);
            $sql->bindParam(':state', $state);
            $sql->bindParam(':zipCode', $zipcode);
            $sql->bindParam(':phone', $phoneNumber);
            $sql->bindParam(':email', $email);
            $sql->bindParam(':gender', $gender);
            $sql->bindParam(':maritalStatus', $maritalStat);
            $sql->bindParam(':dateOfBirth', $birthday);
            
            $sql->execute();

            $last_id = $conn->lastInsertId();
            $_SESSION["last_id"] = "last_id";

            header("Location: confirmation.php");
        }
        catch(PDOException $e){
            echo "Connection Falied: " . $e->getMessage();
            
        } finally{
            $conn = null;
        }
    }

?>

MariaDB数据库图片:
enter image description here
我还检查了connectionInfo.php中的变量是否与insertValidData.php中的变量相同,如果我将它们回显,则它们似乎是相同的。我真的不知道该怎么做,我甚至问过我的老师,他们说看起来很好,所以我想我应该在这里尝试问一下。

nwwlzxa7

nwwlzxa71#

问题一定是小问题。你可能忘记加括号了。用法错误

$sql = $conn->prepare("INSERT INTO registration (userName, password, firstName, lastName, address1, address2, city, state, zipCode, phone, email, gender, maritalStatus, dateOfBirth)
             VALUES (:userName, :password, :firstName, :lastName, :address1, :address2, :city, :state, :zipCode,:phone, :email, :gender, :maritalStatus, :dateOfBirth");

你能试试这个吗?

$sql = $conn->prepare("INSERT INTO registration (userName, password, firstName, lastName, address1, address2, city, state, zipCode, phone, email, gender, maritalStatus, dateOfBirth)
        VALUES (:userName, :password, :firstName, :lastName, :address1, :address2, :city, :state, :zipCode,:phone, :email, :gender, :maritalStatus, :dateOfBirth)");

相关问题