我正在尝试创建我将能够在 javascript 代码中使用的 PHP 函数。
<!DOCTYPE html>
<?php
include 'pdo_connect.php';
function pleaseWork($query) {
return dataQuery($query)->fetchAll();
}
function makeQuery($query)
{
$work = pleaseWork($query);
$json = json_encode($work);
}
?>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<title>Admin check</title>
<meta charset="UTF-8">
</head>
<body>
<script type='text/javascript'>
<?php makeQuery("SELECT * FROM `grupy`");?>
var jArray = <?= $json ?>;
console.log(jArray);
</script>
当然这是行不通的,因为 JS block 中的代码对文件开头的变量一无所知。我怎么做?我从未使用过 AJAX 或任何东西,所以我不知道该怎么做。
最佳答案
您需要更详细地了解 OOP(面向对象编程)。也许搜索依赖注入(inject)或异常。此外,您需要创建一个 PHP 脚本来接受您的 ajax 请求并调用必要的函数或方法,这些函数或方法应该全部分离到它们自己的文件和类中。这会将不同的数据层彼此分开(即表示、业务逻辑、数据)。您还应该花一些时间学习 MVC( Model View Controller )是关于什么的。这将帮助您了解分离的重要性。
现在,我将向您展示一个快速解决您的问题的方法。假设您的文件结构都在同一个目录中:
|--- ajax_requests.php
|--- Database.php
|--- Functions.php
|--- index.php
index.php 是您的 HTML/jQuery 所在的位置:
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<title>Admin check</title>
<meta charset="UTF-8">
</head>
<body>
<script type='text/javascript'>
$.ajax({
type: "post",
url: "ajax_requests.php",
data: {request: "get_grupy_json"},
success: function(result){
console.log(result);
}
});
</script>
注意我们是如何使用 jQuery 发出 Ajax 请求的。我们正在向文件 ajax_requests.php
发送 post
请求,发送 get_grupy_json
作为我们的 request
参数。您的前端 View 中不应出现任何 SQL 查询。
ajax_requests.php 接收请求,获取数据库对象并将其发送到函数对象,然后检查请求是否作为函数类的方法存在,如果存在,则运行方法并将结果转为json(记得自己添加错误检查):
<?php
if (!empty($_POST)) {
$method = $_POST['request'];
include 'Database.php';
include "Functions.php";
$db = new Database();
$functions = new Functions($db);
if (method_exists($functions, $method)) {
$data = $functions->$method();
header('Content-Type: application/json');
echo json_encode($data);
}
}
Functions.php
class Functions
{
private $db;
public function __construct(Database $db)
{
$this->db = $db;
}
public function get_grupy_json()
{
$query = "SELECT * FROM `grupy`";
$result = $this->db->dataQuery($query);
return $result->fetchAll();
}
}
数据库.php
class Database
{
private $conn = null;
public function __construct()
{
try {
$username = "root";
$password = "root";
$servername = "localhost";
$dbname = "test";
$this->conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
trigger_error("Error: " . $e->getMessage());
}
}
public function dataQuery($query, $params = array())
{
try {
$stmt = $this->conn->prepare($query);
$stmt->execute($params);
return $stmt;
} catch (PDOException $e) {
trigger_error("Error: " . $e->getMessage());
};
}
}
这是我将要做的事情的粗略模型。我希望您了解它是如何分离的,以便您可以随着应用程序的增长轻松地向其添加功能。
关于javascript - 使用 javascript 函数进行 MySQL 查询。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35440184/