PHP-скрипт не выдаст исключение - PullRequest
0 голосов
/ 24 марта 2012

Я пытаюсь проверить мою форму php, используя исключение, но почему-то это не работает. Предполагается, что исключение выдается, если пользователь вводит в «nameg» любой символ, который не является строкой, и в «amountg» все, что не является целым числом. Должны ли исключения даже использоваться в этом случае:

if(!empty($_POST['nameg']) && !empty($_POST['amountg']))
{
    $user="rootdummy";
    $pass="password";
    $db="practice";
    $nameg=$_POST['nameg'];
    $amountg=$_POST['amountg'];

    try{
        if(!is_int($amountg) || !is_string($nameg)){
            throw new Exception("This is the exception message!");
        }
    }
    catch (Exception $e){
        $e->getMessage();
    }

    mysql_connect('localhost',$user,$pass) or die("Connection Failed!, " . mysql_error());
    $query="INSERT INTO practable (name,given) VALUES('$nameg',$amountg) ON DUPLICATE KEY UPDATE name='$nameg', given=IFNULL(given + $amountg,$amountg)";
    mysql_select_db($db) or die("Couldn't connect to Database, " . mysql_error());
    mysql_query($query) or die("Couldn't execute query! ". mysql_error());

    mysql_close() or die("Couldn't disconnect!");
    include("dbclient.php");
    echo "<p style='font-weight:bold;text-align:center;'>Information Added!</p>";
}

Ответы [ 3 ]

3 голосов
/ 24 марта 2012

Предположительно, вы хотите вывести исключение?Выполните:

echo $e->getMessage();

Редактировать: В ответ на ваш более поздний комментарий относительно завершения сценария поместите запросы MySQL в блок try. Редактировать 2: Изменена проверка в ответ на ваши комментарии.

if(!empty($_POST['nameg']) && !empty($_POST['amountg']))
{
    $user="rootdummy";
    $pass="password";
    $db="practice";
    $nameg=$_POST['nameg'];
    $amountg=$_POST['amountg'];

    try{

        if(!ctype_numeric($amountg) || !ctype_alpha($nameg)){
            throw new Exception("This is the exception message!");
        }

      mysql_connect('localhost',$user,$pass) or die("Connection Failed!, " . mysql_error());
      $query="INSERT INTO practable (name,given) VALUES('$nameg',$amountg) ON DUPLICATE KEY UPDATE name='$nameg', given=IFNULL(given + $amountg,$amountg)";
      mysql_select_db($db) or die("Couldn't connect to Database, " . mysql_error());
      mysql_query($query) or die("Couldn't execute query! ". mysql_error());

      mysql_close() or die("Couldn't disconnect!");
      include("dbclient.php");
      echo "<p style='font-weight:bold;text-align:center;'>Information Added!</p>";

    }
    catch (Exception $e){
        echo $e->getMessage();
    }
}
1 голос
/ 24 марта 2012

Да, но вы ничего не делаете со своим исключением, кроме как поймаете его.

Попробуйте

echo $e->getMessage()
1 голос
/ 24 марта 2012

Вы ловите его и выполняете оператор, который практически ничего не делает.

$e->getMessage(); просто получает его как строку и выбрасывает, не повторяя его.

Либо повторяйте его, либо отбрасывайтеили, если вы просто хотели выйти в этот момент, вообще не перехватывайте исключение (вы можете удалить блоки try и catch).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...