我最近将一个代码块转换为一个函数,这样我就可以轻松地多次调用它。我的问题是,一旦我将块与函数相关联,它每次都会失败 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。
可能没有看到一些非常明显的东西,我只是不明白为什么这个代码块在我周围放置功能块的那一刻就停止工作了。
$link
在你的函数中不存在。您要么需要将其作为参数传递给函数,要么完全跳过它并使用"当前"数据库连接。
引号中的"current"是因为虽然在整个过程中使用单个数据库连接时它应该可以正常工作,但一旦您开始使用多个连接(连接到多个数据库(,这种方法就会非常失败。