解析错误:语法错误,意外'?>',期望user.php中的函数(T_FUNCTION)

时间:2016-10-15 06:24:26

标签: php

我试图通过创建类来将一些数据存储在数据库中。为此,我将我的user.php类放在我的根目录下的目录名类中。

这是我的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)

但是当我运行该程序时,我得到以下错误:

  

解析错误:语法错误,意外'?&gt;',期待功能   第26行的C:\ xampp \ htdocs \ atom2 \ classes \ user.php中的(T_FUNCTION)

1 个答案:

答案 0 :(得分:0)

  

注意:我们已弃用mysql_*的使用,建议您使用mysqli_*PDO以及准备好的文章。

您已经提到了这个错误。

  

解析错误:语法错误,意外'?&gt;',期望第26行的C:\ xampp \ htdocs \ atom2 \ classes \ user.php中的函数(T_FUNCTION)

原因:您尚未正确连接插入语句值。这就是你面对这个错误的原因。

错误代码:

$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错误,你必须将其更改为如下。

替换:

require_once './classes/user.php';

使用:

require_once 'classes/user.php'; OR
include('classes/user.php');
  • 此处../将从index.php的当前目录移回一个文件夹并在此处加载user.php文件,并且没有./到需要。