代码中出现意外的catch错误

时间:2014-04-05 08:55:23

标签: php syntax-error try-catch

我正在使用PHP进行注册,我遇到了意想不到的问题,你能帮帮我吗?

if (isset($_POST['nick']) && isset($_POST['heslo']) && 
    isset($_POST['email']) && isset($_POST['datnar']))
{
  try
    {
        $email = ($_POST['email']);
        $datnar = ($_POST['datnar']);        
        $nick = ($_POST['nick']);
        $heslo = md5($_POST['heslo']);
        $db->query("INSERT INTO tblosoba(`nick`, `heslo`, `email`, `datnar`) VALUES ($nick, '$heslo', $email, $datnar)");
        echo "Registrace dokončena.";
    catch( PDOException $Exception ) {
        echo "Uživatel existuje";
    }
}

3 个答案:

答案 0 :(得分:1)

您需要关闭try阻止。

{
    try
    {
        $email = ($_POST['email']);
        $datnar = ($_POST['datnar']);
        $nick = ($_POST['nick']);
        $heslo = md5($_POST['heslo']);
        $db->query("INSERT INTO tblosoba(`nick`, `heslo`, `email`, `datnar`) VALUES ($nick, '$heslo', $email, $datnar)");
        echo "Registrace dokončena.";
    } //<-------------------------------------------- Here
    catch(PDOException $Exception ) {
        echo "Uživatel existuje";
    }
}

警告:您的代码容易受到SQL注入攻击。在将$_POST值传递给查询之前,您需要对其进行过滤。

使用Prepared Statements参数化查询)来抵御SQL注入攻击,因为您已经在使用PDO。

答案 1 :(得分:0)

}

之前添加结束花括号(catch

答案 2 :(得分:0)

以下是修复代码的方法

if (isset($_POST['nick']) && isset($_POST['heslo']) && 
    isset($_POST['email']) && isset($_POST['datnar']))

{
    $sql = "INSERT INTO tblosoba(`nick`, `heslo`, `email`, `datnar`) VALUES (?,?,?,?)";
    $data = [$_POST['nick'],$_POST['heslo'],$_POST['email'],$_POST['datnar']];
    $db->prepare($sql)->execute($data);
    echo "Registrace dokončena.";
}

请注意,您不应在此处使用try-catch,而应使用预备语句