Php 函数失败时MySQLi execute不返回false

Php 函数失败时MySQLi execute不返回false,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个函数可以插入到一个表中,然后使用LAST\u insert\u ID插入到另一个表中,最后返回LAST\u insert\u ID。它工作正常,只是有一个外键,可能导致函数失败错误1452。当我在MySQLWorkbench中使用错误的外键测试此查询时,会发生这种情况: SELECT create_match(1,2); 但是在PHP中,如果函数失败,它仍然返回true $query = "SELECT create_match(?,?)"; if (!$stmt =

我有一个函数可以插入到一个表中,然后使用
LAST\u insert\u ID
插入到另一个表中,最后返回
LAST\u insert\u ID
。它工作正常,只是有一个
外键
,可能导致函数失败错误1452。当我在
MySQLWorkbench
中使用错误的外键测试此查询时,会发生这种情况:

SELECT create_match(1,2);
但是在
PHP
中,如果函数失败,它仍然返回true

    $query = "SELECT create_match(?,?)";
    if (!$stmt = $this->mysqli->prepare($query))
        error_log("CreateMatch() Failed to prepare statement: " . $this->mysqli->error . __FILE__ . " Line: " . __LINE__,0);
    else {
        $stmt->bind_param('ii', $gameID, $userID);
        $success = $stmt->execute();
        $stmt->bind_result($res);
        $stmt->fetch();
    }

即使函数失败,
$success
也为真。为什么会这样?我如何检测函数是否失败?我对在函数中测试它感到厌倦,因为我返回的是一个无符号的int,任何数字都可能是有效的。

如果从php执行函数,那么您会从函数中得到预期的结果吗,或者您没有返回任何内容,并且也没有引发sql错误?我返回了0,但我不确定这是一个false还是一个null作为整数进行计算。但无论哪种方式,都不应为零。可能2个mysql连接(workbench vs php)具有不同的设置,因此在workbench中引发错误的内容只会在php中引发警告。你能用不正确的参数执行函数,然后从php代码中运行一个显示警告并输出结果吗?当它失败时,你会得到什么?