这是我计划在整个程序中执行的所有类函数的地方。我对 php 相当陌生,我无法让它工作。
<?php
class DatabaseFunctions
{
public $link;
private $hostname = "localhost";
private $username = "root";
private $password = "root";
private $db = "data";
function __construct($this->hostname, $this->username, $this->password, $this->db)
{
$this->link = mysqli_connect($this->hostname, $this->username, $this->password, $this->db);
}
function ATDB($firstname, $lastname, $telephone, $email)
{
$sql= "INSERT INTO users(firstname, lastname, telephone, email) VALUES
('$firstname', '$lastname', '$telephone', '$email')";
mysqli_query($this->link, $sql);
}
function DFDB($firstname, $lastname)
{
$sql = "DELETE FROM users WHERE firstname='$firstname' AND WHERE lastname='$lastname";
mysqli_query($this->link, $sql);
}
function GetUsers()
{
$sql = ("SELECT * FROM users");
$results = mysqli_query($this->link, $sql);
}
function UTDB($firstname, $lastname, $telephone, $email)
{
$sql = ("UPDATE users
SET firstname = '$firstname',
lastname = '$lastname',
telephone = '$telephone',
email = '$email'
WHERE ID = '$id'
");
mysqli_query($this->link, $sql);
}
function SDB($search_text_1, $search_text_2)
{
$sql = ("SELECT * FROM
data
WHERE
lastname LIKE '$search_text_2'
OR
firstname LIKE '$search_text_1'");
mysqli_query($this->link, $sql);
}
}
?>
在此表单上,我尝试执行函数ATDB函数,但它不起作用。
<html>
<head>
<?php include("nav.php"); ?>
<link rel="stylesheet" href="main.css">
</head>
<body>
<h1>Add to database</h1>
<form method="post" action="<? echo $_SERVER['PHP_SELF']?>">
<p>Firstname
<input type="text" name="firstname" /> </p>
<p>Lastname
<input type="text" name="lastname" /> </p>
<p>Telephone
<input type="tel" name="telephone" size="10" /> </p>
<p>Email
<input type="text" name="email" /> </p>
<input type="submit" value="Submit"/>
</form>
</body>
</html>
<?php
include("connect.php");
$db = new DatabaseFunctions;
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$telephone = $_POST['telephone'];
$email = $_POST['email'];
$db->ATDB('$firstname', '$lastname', '$telephone', '$email');
?>
有人可以告诉我为什么吗?
我对你的班级做了一个小的重写。 仔细阅读并学习。经常使用这个。另请阅读:如何防止 PHP 中的 SQL 注入?
class DatabaseFunctions
{
public $link;
private $hostname = "localhost";
private $username = "root";
private $password = "root";
private $db = "data";
function __construct()
{
$this->link = new mysqli($this->hostname, $this->username, $this->password, $this->db);
}
function ATDB($firstname, $lastname, $telephone, $email)
{
$q = $this->link->prepare('INSERT INTO users(firstname, lastname, telephone, email) VALUES (?,?,?,?)');
$q->bind_param('ssss', $firstname, $lastname, $telephone, $email);
$q->execute();
}
function DFDB($firstname, $lastname)
{
$q = $this->link->prepare('DELETE FROM users WHERE firstname=? AND lastname=?');
$q->bind_param('ss', $firstname, $lastname);
$q->execute();
}
function GetUsers()
{
$result = $this->link->query('SELECT * FROM users');
while ($row = $result->fetch_object()) {
//some operations
echo $row->firstname;
echo $row->lastname;
}
}
function UTDB($firstname, $lastname, $telephone, $email, $id)
{
$q = $this->link->prepare('UPDATE users
SET firstname = ?,
lastname = ?,
telephone = ?,
email = ?
WHERE ID = ?
');
$q->bind_param('ssssi', $firstname, $lastname, $telephone, $email, $id);
$q->execute();
}
}
构造对象和调用函数
$db = new DatabaseFunctions();
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$telephone = $_POST['telephone'];
$email = $_POST['email'];
$db->ATDB($firstname, $lastname, $telephone, $email);