Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我在php中执行查询时,我得到:致命错误:未捕获错误:调用bool中的成员函数close()_Php_Mysql - Fatal编程技术网

当我在php中执行查询时,我得到:致命错误:未捕获错误:调用bool中的成员函数close()

当我在php中执行查询时,我得到:致命错误:未捕获错误:调用bool中的成员函数close(),php,mysql,Php,Mysql,我正在学习一门关于php和mysql的课程,并且有一项关于CRUD的任务。 当我执行查询以删除表和相关表的内容时 一切正常,但我得到: 致命错误:未捕获错误:调用bool上的成员函数close() 在里面 /Applications/XAMPP/xamppfiles/htdocs/LOI/hoofdstuk10/opgive/schoon.php:10 堆栈跟踪:#0{main}已抛出 /Applications/XAMPP/xamppfiles/htdocs/LOI/hoofdstuk10/o

我正在学习一门关于php和mysql的课程,并且有一项关于CRUD的任务。 当我执行查询以删除表和相关表的内容时 一切正常,但我得到:

致命错误:未捕获错误:调用bool上的成员函数close() 在里面 /Applications/XAMPP/xamppfiles/htdocs/LOI/hoofdstuk10/opgive/schoon.php:10 堆栈跟踪:#0{main}已抛出 /Applications/XAMPP/xamppfiles/htdocs/LOI/hoofdstuk10/opgive/schoon.php 第10行

有什么不对劲吗? 这是一个非常简单的文档,所以可能在sql文档中

<?php

require_once 'login.php';

$query = "DELETE FROM Lid";

$result = $conn->query($query);
if (!$result) die ('DELETE failed');

$result->close();
$conn->close();
?>

mysqli查询返回true

失败时返回FALSE。为了成功地选择、显示、描述或解释查询,mysqli_query()将返回一个mysqli_结果对象对于其他成功的查询,mysqli_query()将返回TRUE

您的请求没有返回任何数据,这就是为什么您收到true

只需删除此行:

$result->close();

@NigelRen。此行检查请求的错误,以防返回false。在上面的代码中,它工作正常并返回true。但它仍然是一个布尔值。没有必要关闭它。@mickmackusa你读过这个问题了吗?这种欺骗接近没有任何意义。@Paul我没有注意到OP试图释放一个从未有过的结果集。我的观点是,有条件的
die()
是不准确的——语法错误检查只是成功删除的指标的一半。
CREATE TABLE Postcodes (
    postcode CHAR(6) NOT NULL,
    straat VARCHAR(60) NOT NULL,
    woonplaats VARCHAR(60) NOT NULL,
    PRIMARY KEY (postcode));

CREATE TABLE Lid (
    lidnummer INT NOT NULL AUTO_INCREMENT,
    naam VARCHAR(30) NOT NULL,
    voornaam VARCHAR(30) NOT NULL,
    postcode CHAR(6) NOT NULL,
    huisnummer VARCHAR(10) NOT NULL,
    PRIMARY KEY (lidnummer),
    CONSTRAINT FK_postcode FOREIGN KEY (postcode)
    REFERENCES Postcodes(postcode));

CREATE TABLE email (
    lidnummer INT NOT NULL,
    emailadres VARCHAR(60),
    PRIMARY KEY (emailadres),
    CONSTRAINT FK_email FOREIGN KEY (lidnummer)
    REFERENCES Lid(lidnummer) ON DELETE CASCADE);

CREATE TABLE Telefoonnummers (
    lidnummer INT NOT NULL,
    telefoonnummer VARCHAR(60),
    PRIMARY KEY (telefoonnummer),
    CONSTRAINT FK_telefoonnummer FOREIGN KEY (lidnummer)
    REFERENCES Lid(lidnummer) ON DELETE CASCADE);


INSERT INTO Postcodes(postcode, straat, woonplaats)
    VALUES('3333AA', 'van Goghsingel', 'Amsterdam'),
            ('4444BB', 'Rembrandtlaan', 'Rotterdam'),
            ('5555CC', 'Mondriaanstraat', 'Den Haag');

INSERT INTO Lid(lidnummer, naam, voornaam, postcode, huisnummer)
    VALUES(1, 'Jansen', 'Jan', '3333AA', '10'),
            (2, 'Pietersen', 'Piet', '4444BB', '20'),
            (3, 'Klaassen', 'Klaas', '5555CC', '30');

INSERT INTO email(lidnummer, emailadres)
    VALUES((SELECT lidnummer FROM Lid WHERE postcode = '3333AA' AND huisnummer = '10'), 'jan@gmail.com'),
            ((SELECT lidnummer FROM Lid WHERE postcode = '4444BB' AND huisnummer = '20'), 'piet@gmail.com'),
            ((SELECT lidnummer FROM Lid WHERE postcode = '5555CC' AND huisnummer = '30'), 'klaas@gmail.com');

INSERT INTO Telefoonnummers(lidnummer, telefoonnummer)
    VALUES((SELECT lidnummer FROM Lid WHERE postcode = '3333AA' AND huisnummer = '10'), '0655554444'),
            ((SELECT lidnummer FROM Lid WHERE postcode = '4444BB' AND huisnummer = '20'), '0632323232'),
            ((SELECT lidnummer FROM Lid WHERE postcode = '5555CC' AND huisnummer = '30'), '0612345678');