2017-03-23 8 views
-1

これはPHPで初めてのことであり、私はこのコードで何が間違っているのか分かりません。それは20行目です(if(isset($ _ COOKIE ['hash'])){)誰かが私を助けることができますpls?致命的なエラー:キャッチなしでtryを使うことはできません。最後に/users/xxx/www/index.php 20行目にあります。

<?php 
if (!isset($_GET['page'])) { 
header('Location: /main'); 
exit(); 
} 

ini_set('display_errors','Off'); 
try { 
$database_host = "localhost"; 
$database_name = "NAME"; 
$database_user = "USER"; //name for phpMyAdmin in bplaced 
$database_pass = "*******"; //password in phpMyAdmin in bplaced 
global $db; 
$db= mysqli_connect($database_host, $database_user, $database_pass, $database_name) or 
     die('Connect Error (' . mysqli_connect_errno() . ') ' 
     . mysqli_connect_error()); 
mysqli_set_charset($db, "utf8"); 
} 

if (isset($_COOKIE['hash'])) { 
$sql = $db->query("SELECT * FROM `users` WHERE `hash` = " . $db->quote($_COOKIE['hash'])); 
if ($sql->rowCount() != 0) { 
    $row = $sql->fetch(); 
    $user = $row; 
} 
} 
+0

「キャッチ」ブロックがありません。 – rray

+0

あなたのエラーは、指定された行を超えています。システムは試行後にcatchブロックを待つ。 – RST

+1

これは簡単な誤字/エラーメッセージの読み込みが不十分なため、トピック外としてマークされています。 – Pred

答えて

0

エラーは、コードがcatch(){}ブロックが欠落していることを意味します。

のtry-catchの構文は次のとおりです。

try 
{ 
    //Do something here which might cause an exception 
} 
catch(Exception $e) 
{ 
    //You are here means that the exception occurred now do something else here. 
} 

は、必ず以下の構文に例外が発生したかどうかを実行するかどうfinally節をも持つことができます。

try 
{ 
    print "this is our try block\n"; 
    throw new Exception(); 
} 
catch (Exception $e) 
{ 
    print "something went wrong\n"; 
} 
finally 
{ 
    print "This part is always executed\n"; 
} 
0

あなたが配置する必要があります次のようにtryブロックを閉じた後にcatchステートメントを実行します。

<?php 
if (!isset($_GET['page'])) { 
    header('Location: /main'); 
    exit(); 
} 

ini_set('display_errors', 'Off'); 
try { 
    $database_host = "localhost"; 
    $database_name = "NAME"; 
    $database_user = "USER"; //name for phpMyAdmin in bplaced 
    $database_pass = "*******"; //password in phpMyAdmin in bplaced 
    global $db; 
    $db = mysqli_connect($database_host, $database_user, $database_pass, $database_name) or die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); 
    mysqli_set_charset($db, "utf8"); 
} 
catch (Exception $e) { 
    // do something 
} 

if (isset($_COOKIE['hash'])) { 
    $sql = $db->query("SELECT * FROM `users` WHERE `hash` = " . $db->quote($_COOKIE['hash'])); 
    if ($sql->rowCount() != 0) { 
     $row = $sql->fetch(); 
     $user = $row; 
    } 
} 
0

catchブロックafがありませんtryブロックを使用します。それぞれのtryには、PHPで対応するcatchまたはfinallyブロックが少なくとも1つ必要です。 参照:http://php.net/manual/en/language.exceptions.php

関連する問題