我是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) {