Почему функция добавления в базу данных (ATDB) не работает с php oop?

0

Здесь я сохраняю все функции класса, которые планирую выполнять во всей программе. Я новичок в 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');

?>

Может кто-нибудь сказать мне, почему?

Теги:
oop
mysqli

1 ответ

1
Лучший ответ

Я сделал небольшую переписку с вашим классом. Читайте внимательно и учитесь. Используйте это много. Также прочтите следующее: Как я могу предотвратить SQL-инъекцию в PHP?

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);
  • 0
    Это все еще использует mysqli?
  • 0
    это все еще не работает для меня, я делаю это на мампе, если это имеет значение?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню