致命错误:未捕获错误:在布尔值中调用成员函数execute()

时间:2018-01-18 10:45:50

标签: php execute

我知道有一些话题正在讨论这个但不幸的是我无法让它为我工作。我可能会监督一些事情。

我收到了以下代码:

function get_kurs($block){
    open_connection();
    global $conn;

    $stmt = $conn->prepare("SELECT FachKürzel FROM `Fach` LEFT JOIN `Stunde` ON Fach.Fachname = Stunde.Fachname WHERE Stunde.Stunde = ?");
    $stmt->bind_param("s", $block);
    $stmt->execute();
    $stmt->bind_result($kuerzel);
    $stmt->fetch();

    print $kuerzel;

    $stmt->close();
    $conn->close();
}

当我尝试执行它时,它会给我描述的错误。我认为它可能与查询有关,但在同一个数据库中在HeidiSQL中运行完全相同的查询会给我我想要的结果。

连接正常,因为我可以通过简单的查询在我的网站上显示结果。

有什么想法吗? 提前谢谢!

编辑:以防万一重要:

function open_connection(){
    $servername = "XXX.XXX.XXX.XXX";
    $username = "username";
    $password = "password";
    $dbname = "XXXX";

    global $conn;
    $conn = new MySQLi($servername, $username, $password, $dbname);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
}

1 个答案:

答案 0 :(得分:0)

prepare函数可以返回语句对象或false。如果您得到错误,则表示存在错误。

尝试使用$conn->errno$conn->error打印错误,以便更好地了解您的问题。

您可以将代码更改为以下内容:

function get_kurs($block){
    open_connection();
    global $conn;

    if($stmt = $conn->prepare("SELECT FachKürzel FROM `Fach` LEFT JOIN `Stunde` ON Fach.Fachname = Stunde.Fachname WHERE Stunde.Stunde = ?")){
        $stmt->bind_param("s", $block);
        $stmt->execute();
        $stmt->bind_result($kuerzel);
        $stmt->fetch();
    }else{
        printf('errno: %d, error: %s', $conn->errno, $conn->error);
        die;
    }

    print $kuerzel;

    $stmt->close();
    $conn->close();
}
相关问题