New to PHP and trying out Robin Nixon's social app. I've successfully deployed the app to Heroku but I get the below error when trying to create a new user account. It was working just fine when I was running locally. I am using ClearDB as my MySQL provider.
From looking at other's issues, I've tried removing my "die" calls in case I was closing the connection to early.
2019-11-30T21:58:24.249732+00:00 app[web.1]: [30-Nov-2019 21:58:24 UTC] PHP Warning:  mysqli_query(): Couldn't fetch mysqli in /app/web/functions.php on line 66
My code is this for the database connections, etc.:
$connection = new mysqli($server, $username, $password, $db);
  // if ($connection->connect_error) die($connection->connect_error);
    if ($connection->connect_error) die("Fatal Error");
// $connection = new mysqli($server, $username, $password, $db);
// // Check connection
// if ($connection->connect_error) {
//    die("Connection failed: " . $connection->connect_error);
// }
//   echo "Connected successfully";
  function createTable($name, $query)
  {
    queryMySQL("CREATE TABLE IF NOT EXISTS $name($query)");
    echo "Table '$name' created or already exists.<br>";
  }
  function queryMySQL($query)
  {
    global $connection;
   // $result = $connection->query($query);
    $result = mysqli_query($connection,$query);   // line 66
     if (!$result) die("Fatal Error - broke");
     return $result;
  }
  function sanitizeString($var)
  {
    global $connection;
    $var = strip_tags($var);
    $var = htmlentities($var);
    if (get_magic_quotes_gpc())
    $var = stripslashes($var);
      return $var;
    //return $connection->mysqli_real_escape_string($var);
  }
  function showProfile($user)
  {
    if (file_exists("$user.jpg"))
      echo "<img src='$user.jpg' style='float:left;'>";
    $result = queryMySQL("SELECT * FROM profiles WHERE user='$user'");
    if ($result->num_rows)
    {
      $row = $result->fetch_array(MYSQLI_ASSOC);
      echo stripslashes($row['text']) . "<br style='clear:left;'><br>";
    }
    else echo "<p>Nothing to see here, yet</p><br>";
  }
  function destroySession()
  {
    $_SESSION=array();
    if (session_id() != "" || isset($_COOKIE[session_name()]))
      setcookie(session_name(), '', time()-2592000, '/');
    session_destroy();
  }
?>
The code for my signup page is this:
<?php 
  require_once 'header.php';
  echo <<<_END
  <script>
    function checkUser(user)
    {
      if (user.value == '')
      {
        $('#used').html(' ')
        return
      }
      $.post
      (
        'checkuser.php',
        { user : user.value },
        function(data)
        {
          $('#used').html(data)
        }
      )
    }
  </script>  
  <div class='main'><h3>Please enter your details to sign up</h3>
_END;
  $error = $user = $pass = "";
  if (isset($_SESSION['user'])) destroySession();
  if (isset($_POST['user']))
  {
    $user = sanitizeString($_POST['user']);
    $pass = sanitizeString($_POST['pass']);
    if ($user == "" || $pass == "")
      $error = 'Not all fields were entered<br><br>';
    else
    {
      $result = queryMysql("SELECT * FROM members WHERE user='$user'");
      if ($result->num_rows)
        $error = 'That username already exists<br><br>';
      else
      {
        queryMysql("INSERT INTO members VALUES('$user', '$pass')");
        die('<h4>Account created</h4>Please Log in.</div></body></html>');
      }
    }
  }
  echo <<<_END
    <form method='post' action='signup.php'>$error
    <span class='fieldname'>Username</span>
    <input type='text' maxlength='16' name='user' value='$user'
      onBlur='checkUser(this)'><span id='info'></span><br>
    <span class='fieldname'>Password</span>
    <input type='text' maxlength='16' name='pass'
      value='$pass'><br>
_END;
?>
    <span class='fieldname'> </span>
    <input type='submit' value='Sign up'>
    </form></div><br>
  </body>
</html>
Thanks in advance!
