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

Posted

技术标签:

【中文标题】我可以在另一个文件中运行 sql 查询吗?【英文标题】:Can I run a sql query in another file? 【发布时间】:2019-12-17 09:05:47 【问题描述】:

我正忙于学习 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 文件中。

【问题讨论】:

您可以在官方文档中找到有关您的请求的详细信息,请查看此链接:php.net/manual/en/mysqli.quickstart.statements.php 提示:我建议使用PDO 而不是mysqli。 PDO 为您提供了更详细的 API。使其更易于使用。 【参考方案1】:

如果您使用 stm,您可以使用该代码执行:

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

$conn->query($stmt);

【讨论】:

第一个会抛出错误,因为$stmt 是字符串而不是语句。 是的,但我们不知道他是否要使用声明。我会更正【参考方案2】:

在您的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 中一个更通用的数据库交互库,您可能无法像在学校那样为该代码执行该代码,但对于您自己的项目:)

【讨论】:

但我想在 UserController 中使用 $conn 变量而不是在连接文件中。我可以像你的第一行代码一样使用它还是我需要做其他事情 使用函数 include 或 require_once 调用控制器到您的页面。 您的用户控制器已经包含您的DbConnection.php 文件:) include_once ("../Includes/DbConnection.php");

以上是关于我可以在另一个文件中运行 sql 查询吗?的主要内容,如果未能解决你的问题,请参考以下文章

给定特定参数时,如何修复未运行的 SQL 查询? [复制]

我可以从 Netezza 导出 SQL 查询结果吗?

SQL*Plus 可以从运行它的机器上读取环境变量吗?

在另一台电脑上运行exe文件

如何对 MDB 文件运行 SQL 查询?

我可以克隆一个 IQueryable 以在另一个 DbContext 的 DbSet 上运行吗?