Ошибка при загрузке SQL с приложением Heroku ClearDB PHP - PullRequest
1 голос
/ 01 декабря 2019

Новичок в PHP и опробование социального приложения Робина Никсона. Я успешно развернул приложение в Heroku, но при попытке создать новую учетную запись пользователя появляется сообщение об ошибке ниже. Это работало очень хорошо, когда я бегал на месте. Я использую ClearDB в качестве поставщика MySQL.

Изучив другие проблемы, я попытался удалить свои «умершие» вызовы на случай, если я рано закрыл соединение.

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

Мой код для подключения к базе данных и т. Д .:

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

Код для моей страницы регистрации такой:

<?php 
  require_once 'header.php';

  echo <<<_END
  <script>
    function checkUser(user)
    {
      if (user.value == '')
      {
        $('#used').html('&nbsp;')
        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'>&nbsp;</span>
    <input type='submit' value='Sign up'>
    </form></div><br>
  </body>
</html>

Спасибо взаранее!

...