gpt4 book ai didi

php - 无法从 PHP 创建 View 但可以从 phpMyAdmin

转载 作者:行者123 更新时间:2023-11-29 05:52:41 26 4
gpt4 key购买 nike

我正在编写一个 PHP 安装脚本,它将在 MySQL 中创建所需的数据库、表和 View 。当我在 Internet Explorer 中运行该脚本时,它返回一个空白屏幕(如果没有错误,则符合预期)。

当我在 phpMyAdmin 中查看我的数据库时,我看到了所有表,但 View 不存在。当我通过 phpMyAdmin 的 SQL 窗口运行相同的 CREATE VIEW SQL 语句时, View 按预期创建。

我有丰富的 SQL 经验,但我对 PHP 和 phpMyAdmin 是全新的。为什么 View 不是从 PHP 脚本创建的,而表是创建的?

PHP 脚本:

<html>
<head>
<title>Install Flashcard Script</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<link href='https://fonts.googleapis.com/css?family=Lato:300,400,700' rel='stylesheet' type='text/css'>
<link href='custom.css' rel='stylesheet' type='text/css'>
</head>
<body>

<?php
$host = "localhost";
$user = "root";
$password = "";
$database = "FLASHCARD";

$mysqli = new mysqli($host, $user, $password) or die(mysqli_error($mysqli));
$mysqli->query("DROP DATABASE IF EXISTS " . $database) or die($mysqli->error);
$mysqli->query("CREATE DATABASE " . $database) or die($mysqli->error);

$mysqli = new mysqli($host, $user, $password, $database) or die(mysqli_error($mysqli));

$mysqli->query("CREATE TABLE COURSES (
COURSE_ID INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
COURSE_NAME VARCHAR(255) NOT NULL,
COURSE_DESC TEXT NOT NULL,
DATE_CREATED DATETIME NOT NULL,
CREATED_BY BIGINT(20)
)") or die($mysqli->error);

$mysqli->query("CREATE TABLE COURSE_SUBJECTS (
SUBJ_ID INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
COURSE_ID INT(6),
SUBJ_NAME VARCHAR(255) NOT NULL,
SUBJ_DESC TEXT,
DATE_CREATED DATETIME NOT NULL,
CREATED_BY BIGINT(20)
)") or die($mysqli->error);

$mysqli->query("CREATE TABLE SUBJECT_DECKS (
DECK_ID INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
SUBJ_ID INT(6) NOT NULL,
DECK_NAME VARCHAR(255) NOT NULL,
DECK_DESC TEXT,
DATE_CREATED DATETIME NOT NULL,
CREATED_BY BIGINT(20)
)") or die($mysqli->error);

$mysqli->query("CREATE VIEW DECK_VIEW AS
SELECT
c.COURSE_ID,
cs.SUBJ_ID,
sd.DECK_ID,
c.COURSE_NAME,
c.COURSE_DESC,
cs.SUBJ_NAME,
cs.SUBJ_DESC,
sd.DECK_NAME,
sd.DECK_DESC
FROM COURSES c
LEFT JOIN COURSE_SUBJECTS cs ON cs.COURSE_ID = c.COURSE_ID
LEFT JOIN SUBJECT_DECKS sd on sd.SUBJ_ID = cs.SUBJ_ID
ORDER BY COURSE_NAME, SUBJ_NAME, DECK_NAME
)") or die($mysqli->error);

?>
</body>
</html>

**编辑

我在 CREATE VIEW 上遗漏了一条错误捕获语句。现在我在那里添加了它,它给了我以下错误消息:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 16

第 16 行对应于 $database = "FLASHCARD";。这是什么意思?

最佳答案

第 16 行不是来自您的想法,而是查询本身。

你在最后一个查询中遗漏了一个括号,应该也在那里的查询中使用 mysqli_error($mysqli)

所以把你的代码改成

CREATE VIEW DECK_VIEW AS ( SELECT...
^ // right there

关于php - 无法从 PHP 创建 View 但可以从 phpMyAdmin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52688459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com