2016-10-15 4 views
-1

クラスを作成してデータベースにデータを保存しようとしました。そのために私のルートディレクトリにあるディレクトリ名クラスの中にuser.phpクラスを入れました。構文解析エラー:予期しない '?>'、user.phpの関数(T_FUNCTION)が必要です

ここでは私の私のuser.php

<?php 
class User{ 

     public function __construct() 
      { 
       $host='localhost'; 
       $user='root'; 
       $password=''; 
       $conn=mysql_connect($host,$user,$password); 
       if(!$conn){ 
        die("Database Not Connected" . mysqli_error()); 
       } 
       mysqli_select_db("atom2"); 
       //echo "Database created! "; 
      } 

     public function save_user($data){ 
     $sql="INSERT INTO users(name,email) 
        VALUES('$data[name]','$data[email]')"; 
      if(!mysqli_query($sql)){ 
       die("sql Error". mysqli_error()); 
      } 
      echo "Saved Successfully!"; 
      //mysqli_close($conn); 
     } 
    } 
?> 

はここに私のフォーム(index.phpを)です。ここで

<?php 
    require_once './classes/user.php'; 
    $obj=new User(); 
    if(isset($_POST['btn'])){ 
     $obj->save_user($_POST); 
    } 
?> 
<html lang="en"> 
    <head>  
    </head> 
    <body> 

    <form role="form" action="index.php" method="post" class="registration-form"> 
      <div class="form-group"> 
             <label class="sr-only" for="form-first-name">Name</label> 
             <input type="text" name="name" value="<?php if(isset($_POST['name'])){ echo htmlentities($_POST['name']);} ?> " placeholder="Name..." class="form-first-name form-control" id="form-first-name"> 
            </div> 
           <div class="form-group"> 
           <label class="sr-only" for="form-email">Email</label> 
           <input type="text" name="email" placeholder="Email..." class="form-email form-control" value="<?php if(isset($_POST['email'])){ echo htmlentities($_POST['email']);} ?> " id="form-email"> 
           </div> 
    <button type="submit" class="btn" name="btn">Submit</button> 
    </form>       
    </body> 
</html> 

は私のディレクトリ構造です:

Test (Root Directory Name) 
    classes (Folder where user.php class contains) 
     user.php 
    index.php (Form for storing data) 

しかしとき私は次のエラーがあるプログラムを実行します。

Parse error: syntax error, unexpected '?>', expecting function (T_FUNCTION) in C:\xampp\htdocs\atom2\classes\user.php on line 26

+0

Sidenote: 'mysql_ *'関数は非推奨です。代わりに 'mysqli_ *'やPDOを使用してください。 – Panda

+0

@ x69更新された回答を確認してください。またはチャットに来てください。私はそこに答えを提供しました –

答えて

0

Note: Usage of mysql_* has been deprecated and it is advised to use the mysqli_* or PDO along with the prepared stataments.

あなたはこのエラーについて何か言及しました。

Parse error: syntax error, unexpected '?>', expecting function (T_FUNCTION) in C:\xampp\htdocs\atom2\classes\user.php on line 26

理由:あなたは適切にINSERT文の値を連結していません。そしてそれがあなたがこのエラーに直面する理由です。

エラーコード:

$sql="INSERT INTO users(name,email) 
        VALUES('$data[name]','$data[email]')"; 
  • あなたは開始時に二重引用符を使用していると、あなたはPHP変数の周りdouble quotesの助けを借りてのみ連結する必要がありますが、あなたがsingle quotesを使用しています。
  • したがって、二重引用符も一重引用符とともに追加する必要があります。

修正されたコード:

$sql="INSERT INTO users(name,email) VALUES('".$data[name]."','".$data[email]."')"; 

次のようにそこでUser.phpでの最終的なコードは次のようになります。

<?php 
class User{ 

     public function __construct() 
      { 
       $host='localhost'; 
       $user='root'; 
       $password=''; 
       $conn=mysql_connect($host,$user,$password); 
       if(!$conn){ 
        die("Database Not Connected" . mysql_error()); 
       } 
       mysql_select_db("atom2"); 
       //echo "Database created! "; 
      } 

     public function save_user($data){ 
     $sql="INSERT INTO users(name,email) VALUES('".$data[name]."','".$data[email]."')"; 
      if(!mysql_query($sql)){ 
       die("sql Error". mysql_error()); 
      } 
      echo "Saved Successfully!"; 
      //mysql_close($conn); 
     } 
    } 
?> 

これは私のフォーム(index.php)に必要なエラーがあります。これを次のように変更する必要があります。

置き換えます

require_once './classes/user.php'; 

をして:

require_once 'classes/user.php'; OR 
include('classes/user.php'); 
  • ここ../index.phpカレントディレクトリから戻って一つのフォルダに移動し、こっちuser.phpファイルをロードし、何./はありません必要以上に。
+0

私はあなたの解決策を試しましたしかし、同じエラーが私になっている..そして1つの質問は、 '' mysq''を 'mysqli_select_db'として追加して、非推奨を避けることができますか? – Hola

+0

このmysqli_connect($ host、$ user、$ pass、$ db);のように、すべて同じ場所に接続することができます。選択する場所を別にする必要はありません。 –

+0

次に、「パーズ」のような別のタイプの「エラー」、または「インデックス」ページをロードできなかったものがある可能性があります。 – Hola

関連する問題