0

我最近将一个代码块转换为一个函数,这样我就可以轻松地多次调用它。我的问题是,一旦我将块与函数相关联,它每次都会使 SQL 查询失败。这是我的代码块:

    function checkEvent()
{
if(!empty($_GET['e']))
    {
        $sql = mysqli_query($link, "SELECT * FROM events WHERE EventID = '" . mysqli_real_escape_string($link, $_GET['e']) . "'");

        if($sql && mysqli_num_rows($sql)==1)
            {
                if($row = mysqli_fetch_row($sql))
                    {
                        $eventid = $row[0];
                        $eventname = $row[1];
                        $desc = $row[2];
                        $time = $row[3];
                        echo $_GET['e'];
                    }
            }               
        else
            {
                echo $sql;
                $failure = "Num Rows Error encountered: " . mysqli_error($link) . " / Num Rows: " . mysqli_num_rows($sqlE);
            }
    }
}

现在,我已经echo在相关的地方添加了 s 来检查它当前所说的位置,echo $sql;如果我将其更改为,echo "Fail.";那么它确实会这样做。我试图以多行的形式获得结果,但结果为空白。我不明白这一点,因为我EventID是一个AUTO INCREMENT,因此必须从 1 开始。我已经三重检查了第一个条目也是 1。

我可能没有看到真正明显的东西,我只是不明白为什么这个代码块在我在它周围放置一个功能块的那一刻就停止工作。

4

1 回答 1

1

$link在您的函数中不存在。您要么需要将其作为参数传递给函数,要么完全跳过它并使用“当前”数据库连接。

引号中的“当前”,因为当您在整个过程中使用单个数据库连接时它应该可以正常工作,但一旦您开始使用多个连接(连接到多个数据库),这种方法就会非常失败。

于 2013-06-14T23:50:37.287 回答