【发布时间】:2015-07-31 11:13:35
【问题描述】:
我正在尝试按照教程进行面向对象的登录并插入数据库,但这不起作用。它不会连接到数据库,错误:未选择数据库。你能帮帮我吗?
这是代码:
index.php 中的表单
<form action="insert.php" method="post">
Firstname: <input type="text" name="fname" /><br><br>
Lastname: <input type="text" name="lname" /><br><br>
<input type="submit" />
insert_class.php 中的类:
<?php
class Insert_class {
public $servername;
public $username;
public $password;
public $dbname;
public function __construct(){
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// insert into database
$sql = "INSERT INTO nametable (firstname, lastname)
VALUES ('$_POST[fname]','$_POST[lname]')";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
}
}
insert.php 中用于登录和插入数据库的对象:
require 'insert_class.php';
$insert = new Insert_class();
$insert->servername ='localhost';
$insert->username ='root';
$insert->password ='';
$insert->dbname ='newdatabase';
【问题讨论】:
-
请学习如何访问一个类属性,这是 PHP 101。而且你应该得到很多错误,所以打开错误报告
-
我研究了 3 天。如果在 insert_class.php 中添加变量,则插入数据库效果很好。问题是为什么对象中的变量不适用?
-
正如我所说,您需要学习基础知识:php.net/manual/en/language.oop5.basic.php
-
您正在
_construct()函数中连接到数据库。该方法会在您执行$insert = new Insert_class();后立即运行但此时您尚未设置构造函数所需的对象属性。 -
是的,有未定义变量的通知。我知道。这不是访问类属性的正确方法吗?$insert->servername ='localhost';
标签: php database oop object insert