Новичок в 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(' ')
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>
Спасибо взаранее!