PHP function to retrieve mysql table column not working

927

I have this PHP function that I want to use to retrieve a column, "username", from a table called "members". I have used the below function before, and had no problems. But now when I try to use it on a different project it won't work.

Here is the "functions.php" page code:

<?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);
}
?>

On my login.php page I have a session variable that stores the user ID from the table in "$_SESSION['user_id']". I have echoed out the user ID so I know that the user ID is set.

On the page that I want the username echoed to, I have this snippet of code:

<?php echo getusername();?>

I also have the functions.php page "included" on the page where I want the username echoed to.

851

Answer

Solution:

Your $con isn't set inside your function, so mysqli won't work. Additionally you're using backticks around the value you're searching for$_SESSION['user_id'] backticks are for column names, you should use' around values.

try it like this:

<?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'];
   }
}
?>

Then call it passing$con to the function:

 $username=getusername($con);

On a side note yourmysqli_free_result doesn't work if there are results as thereturn will stop the function. I updated the function a bit for it to work as you expect.

People are also looking for solutions to the problem: sql - PHP: How to receive multiple values with ajax?

Source

Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.