我最近将一个代码块转换为一个函数,这样我就可以轻松地多次调用它。我的问题是,一旦我将 block 与函数相关联,它每次都会导致 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
来检查当前显示 echo $sql;
的位置,如果我将其更改为 echo "失败。";
那么它确实会这样做。我试图获得多行结果,但结果为空。我不明白这一点,因为我的 EventID
是一个 AUTO INCRMENT
并且因此必须从 1 开始。我已经三次检查第一个条目也是 1。
我可能没有看到真正明显的东西,我只是不明白为什么这个代码块在我在它周围放置一个功能 block 后立即停止工作。
最佳答案
$link
在您的函数中不存在。您要么需要将其作为参数传递给函数,要么完全跳过它并使用“当前”数据库连接。
“当前”用引号引起来,因为虽然在整个过程中使用单个数据库连接时它应该可以正常工作,但一旦您开始使用多个连接(连接到多个数据库),这种方法就会严重失败。
关于PHP 函数和 SQL 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17118787/