我一直得到一个错误"语法错误,意想不到'catch'(T_CATCH)“


I keep on getting an error "syntax error, unexpected 'catch' (T_CATCH) "

我是PHP的初学者,我正在尝试一个网站注册等。我一直在得到一个错误"意想不到的'catch' (T_CATCH)在C:'wamp'www'ass'注册.php在第67行"每当我点击提交我的注册表单(它在不同的html形式)。下面是我的php文件的代码,当我在html表单上点击提交时调用它。请帮助和非常抱歉,如果有很多菜鸟错误在这里。我说过,我是个初学者。

    <?php
include('connect.php');
$username =$_POST['username'];
$firstname = $_Post['firstName'];
$lastname = $_Post['lastName'];
$emailadd = $_POST['emailAdd'];
$gender = $_POST['gender'];
$userpassword = $_Post['userPassword'];
$dayofbirth = $_POST['dayOfBirth'];
$monthofbirth = $_POST['monthOfBirth'];
$yearofbirth = $_POST['yearOfBirth'];
$profiledesc = $_POST['profileDesc'];
$date = $_POST['yearOfBirth'] . '-' . $_POST['monthOfBirth'] . '-' . $_POST['dayOfBirth'];

    try {
    $host = "localhost";
    $username = "root";
    $password = "";
    $database = "users";
    $dsn = "mysql:host=$host;dbname=$database";
    $conn = new PDO( $dsn, $username, $password );
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO userProfile("
    . "username, firstName, lastName, emailAdd, gender, userPassword, birthday, profileDesc" 
    . " ) VALUES (" 
    . "'" . $lastname . "',"
    . "'" . $firstname . "',"
    . "'" . $emailadd . "',"
    . "'" . $gender ."';"
    . "'" . $userpassword ."';"
    . "'" . $date ."';"
    . "'" . $profiledesc ."';";

    $conn->query($sql);
    $sql = "SELECT * FROM users";
    $users = $conn-query($sql);
    echo '<table>';
    echo '<tr>';
    echo '<th>First Name</th>
          <th>Last Name</th>
          <th>Email Address</th>
          <th>Gender</th>';
    echo '<tr>';
    foreach ($users as $users) {
    echo '<tr>';
    echo '  <td>' . $users['firstName'] . '</td>';
    echo '  <td>' . $users['lastName'] . '</td>';
    echo '  <td>' . $users['emailAdd'] . '</td>';
    echo '  <td>' . $users['gender'] . '</td>';
    echo '  </tr> ';
}
echo '</table>';
        $conn = null;
    catch (PDOException $e) {
        $conn = null;
        exit("Connection failed: " . $e->getMessage());
    }
?>

您缺少try块的右括号

$conn = null;
}// this brace
catch (PDOException $e) {
    $conn = null;
    exit("Connection failed: " . $e->getMessage());
}

你也有语法错误在你的INSERT命令(缺少括号,额外的分号),并容易受到SQL注入。我不想给你讲安全问题,但你正在使用PDO,所以你最好至少准备好你的查询:

$sql = "INSERT INTO userProfile
        (username, firstName, lastName, emailAdd, gender, userPassword, birthday, profileDesc) 
        VALUES (:lastname, :firstname, :emailadd, :gender, :userpassword, :date, :profiledesc)";

$conn->prepare($sql);
$conn->execute(array(
                ':lastname' => $lastname ,
                ':firstname' => $firstname,
                ':emailadd' => $emailadd,
                ':gender' => $gender,
                ':userpassword' => $userpassword,
                ':date' => $date,
                ':profiledesc' => $profiledesc
));

格式化代码将帮助您解决这个问题。我猜这是语法错误,但是,如果你仍然找不到它为什么出现。catch块要求try

一样闭合
try { smth } catch {

但是,您的try块中没有右括号。

我猜它可能需要在$conn = null;之后

您需要在调用catch:

之前关闭try块。
$conn = null;
} catch (PDOException $e) {