0

main.php

When importing config.php, clubsData.php, and calling checkEnrollment(), my database $link is undefined. This breaks all queries and outputs warnings such as "mysqli_prepare() expects parameter 1 to be mysqli, null given..."

session_start();
require_once($_SERVER['DOCUMENT_ROOT']."/imports/config.php");
require_once($_SERVER['DOCUMENT_ROOT']."/imports/clubsData.php");
checkEnrollment($user_id, $clubid);

config.php

$DB_SERVER = getenv('DB_HOST');
$DB_USERNAME = getenv('DB_USER');
$DB_PASSWORD = getenv('DB_PASSWORD');
$DB_NAME = getenv('DB_NAME');

$link = mysqli_connect($DB_SERVER, $DB_USERNAME, $DB_PASSWORD, $DB_NAME);

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

clubsData.php

function checkEnrollment($user_id, $club_id) {
    $sql = "SELECT role FROM in_clubs WHERE user_id = ? AND club_id = ?";
    $stmt = mysqli_prepare($link, $sql);
    mysqli_stmt_bind_param($stmt, "ss", $param_user_id, $param_club_id);
    $param_user_id = $user_id;
    $param_club_id = $club_id;
    mysqli_stmt_execute($stmt);
    mysqli_stmt_store_result($stmt);
    mysqli_stmt_fetch($stmt);
    if(mysqli_stmt_num_rows($stmt) == 1){       
        return true;
    } else {
        return false;
    }
    mysqli_stmt_close($stmt);
}
Dharman
  • 30,962
  • 25
  • 85
  • 135
Jack Tao
  • 13
  • 2

1 Answers1

0

For this to work, you need to pass the $link variable to the function as a parameter, the same way you're passing the $user_id, $club_id parameters.

Define your function like this:

function checkEnrollment($user_id, $club_id, $link) {
$sql = "SELECT role FROM in_clubs WHERE user_id = ? AND club_id = ?";
$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_bind_param($stmt, "ss", $param_user_id, $param_club_id);
$param_user_id = $user_id;
$param_club_id = $club_id;
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
mysqli_stmt_fetch($stmt);
if(mysqli_stmt_num_rows($stmt) == 1){       
    return true;
} else {
    return false;
}
mysqli_stmt_close($stmt);
}

Then call it like this:

checkEnrollment($user_id, $clubid, $link);
Ivan
  • 1,274
  • 16
  • 22