为什么添加到数据库功能(ATDB)不适用于php oop


Why is the add to database function(ATDB) not working with php oop?

这是我计划在整个程序中执行的所有类函数的地方。我对 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);
相关文章: