我试图通过创建类来将一些数据存储在数据库中。为此,我将我的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)
答案 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]')";
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
文件,并且没有./
到需要。