我有一个PHP函数,我想用它从一个名为"members"的表中检索一列"username"。我以前使用过以下功能,没有任何问题。但现在,当我尝试在另一个项目中使用它时,它不会起作用。
以下是"functions.php"页面代码:
<?php
include 'connection.php';
function getusername(){
$query = "SELECT `username` FROM `members` WHERE `ID`=`".$_SESSION['user_id']."`";
if($result = mysqli_query($con, $query)){
while($row = mysqli_fetch_assoc($result)){
return $row['username'];
}
}
mysqli_free_result($result);
}
?>
在我的login.php页面上,我有一个会话变量,它将表中的用户ID存储在"$_session['user_ID']"中。我已经回显了用户ID,所以我知道用户ID已经设置好了。
在我希望用户名回复到的页面上,我有以下代码片段:
<?php echo getusername();?>
我还将functions.php页面"包含"在我希望将用户名回复到的页面上。
$con没有在函数中设置,因此mysqli无法工作。此外,如果要在搜索的值周围使用backticks,则$_SESSION['user_id']
backticks用于列名,应在值周围使用'
。
这样试试:
<?php
include 'connection.php';
function getusername($con){
$query = "SELECT `username` FROM `members` WHERE `ID`='".$_SESSION['user_id']."'";
if($result = mysqli_query($con, $query)){
$row = mysqli_fetch_assoc($result);
mysqli_free_result($result);
return $row['username'];
}
}
?>
然后调用它将$con
传递给函数:
$username=getusername($con);
请注意,如果有结果,您的mysqli_free_result
将不起作用,因为return
将停止该功能。我对函数进行了一些更新,使其如您所期望的那样工作。