我可以在另一个文件中运行SQL查询吗?

时间:2019-12-17 09:05:47

标签: php mysql sql mysqli

我正忙于一个学校项目来学习MVC。但是我对php知之甚少。 我有一个dbconnection文件,它看起来像这样

$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";

我有一个如下登录页面:

<!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>

我有一个如下所示的用户控制器:

<?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);

如何运行$ stmt查询。我不明白我该怎么办

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

编辑:我希望查询$stmt在UserController中运行。不在DbConnection文件中。

2 个答案:

答案 0 :(得分:1)

如果使用stm,则可以执行以下代码:

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

OR

$conn->query($stmt);

答案 1 :(得分:0)

DbConnection.php文件中,您有一个$conn变量,其中包含您与数据库的连接。通过该变量,您可以在数据库上执行查询。

mysqli PHP documentation中进行了修改,可以使用您的代码:

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

请注意,此方法不应与动态生成的查询字符串一起使用:

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

对于动态生成的查询,请使用prepared queries

我还建议使用PDO,它是PHP中更通用的数据库交互库,您可能无法像在学校那样针对该代码执行此操作,而是针对您自己的项目:)

相关问题