简体   繁体   中英

Can I run a sql query in another file?

I am busy with a school project to learn MVC. But I know very little of php. I have an dbconnection file and it looks like this

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "filmopdrachtdb";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection Failed: " . $conn->connet_error);
}

echo "Connected SuccessFully";

I have a login page that looks like this:

<!DOCTYPE html>
<html>
    <head>
        <title>Login</title>
    </head>
    <body>
    <form action="../Controllers/UserController.php" method="post">
        Gebruikersnaam <input type="text" name="naam">
        Wachtwoord <input type="password" name="wachtwoord">
        <input type="submit" value="Login">
    </form>
    </body>
</html>

And I have an User Controller that looks like this:

<?php
include_once ("../Includes/DbConnection.php");
include_once ("../Models/User.php");

$gebruiker = new User();
$naam = $gebruiker->setGebruikersnaam($_POST["naam"]);
$wachtwoord = $gebruiker->setWachtwoord($_POST["wachtwoord"]);

$stmt = "SELECT gebruikersnaam, wachtwoord FROM klanten";


var_dump($stmt);

How do I run the $stmt query. I don't understand what I have to do

$stmt = "SELECT gebruikersnaam, wachtwoord FROM klanten";

EDIT: I want the query $stmt to run in the UserController. Not in the DbConnection file.

If you use stm, you can execute with that code:

$stmt=$conn->prepare("SELECT gebruikersnaam, wachtwoord FROM klanten WHERE user=?");
$stmt->bind_param('s',$naam);
$stmt->execute();

OR

$conn->query($stmt);

In your DbConnection.php file you have a $conn variable which contains your connection to the database. From that variable you can execute your queries on the database.

From the mysqli PHP documentation , modified to work with your code:

$results = $conn->query($stmt);

Please note that this method should not be used with a dynamically generated query string:

//BAD practice, leads to SQL injection
$results = $conn->query("SELECT * FROM MyTable WHERE myColumn = $search LIMIT 10");

For dynamically generated queries use prepared queries .

I could also suggest to use PDO which is a more versatile database interaction libraray in PHP, which you will probably not be able to do for that code as it is for school, but for your own projects :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM