@nikidreiks

Как исправить warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result?

Всем привет)
Не могу решить задачу; суть в том, что авторизация проходит через RedBean , а загрузка/обновление фото профиля на обычном php; ну вот так я захотел.

<?php
require "database.php";
$_SESSION['logged_user'] = $user; // User's session
$sessionId = $_SESSION["id"];
$user = mysqli_fetch_assoc(mysqli_query($link, "SELECT * FROM users WHERE id = $sessionId"));
?>


идет жалоба на
$user = mysqli_fetch_assoc(mysqli_query($link, "SELECT * FROM users WHERE id = $sessionId"));

где $link, должна стоять другая переменная, в связи с чем, как я догадываюсь, вылезает такая ошибка:
"Warning: mysqli_query() expects parameter 1 to be mysqli, null given in"


Код авторизации:

<?php 
$data = $_POST;
if ( isset($data['do_login']) ) 
{
$errors = array();
$user = R::findOne('users', 'login = ?', array($data['login']));
if ($user) 
{
	// логин существует
	if( password_verify($data['password'], $user->password)) {
		// всё хорошо, логиним пользователя
		$_SESSION['logged_user'] = $user;
		header('Location: /'); 
	} else
	{
		$errors[] = 'Неверно введён пароль!';
	}
} else 
{
	$errors[] = 'Пользователь с таким логином не найден!';
}
}

?>

<?php require_once 'tpl/head.php'; ?>
<div class="body_index">
    <div class="authorization">
      <form action="" method="POST">
        <div class="head">
          <p>Авторизация</p>
        </div>
        <div class="main">
          <div class="input-login">
            <input type="login" name="login" placeholder="Логин" value="<?php echo @$data['login']; ?>">
            <img class="login-icon" src="images/log.png" alt="">
          </div>
          <div class="input-password">
            <input type="password" name="password" placeholder="Пароль" value="<?php echo @$data['login']; ?>">
            <img class="lock-icon" src="images/password.png" alt="">
          </div>
		<button type="submit" name="do_login">Войти</button>
        		<?php 
  if( ! empty($errors) )
  {
    echo '<div class="erros_msg">'.array_shift($errors).'</div>';
  }
?>
        </div>
        <div class="footer">
          <p><a class="reg" a href="/signup.php">Регистрация</a></p>
          <p><a class="pass" href="">Забыли пароль?</a></p>
        </div>
      </form>
    </div>
</div>


код загрузки/обновления фото:
<?php
require "database.php";
$_SESSION['logged_user'] = $user; // User's session
$sessionId = $_SESSION["id"];
$user = mysqli_fetch_assoc(mysqli_query($link, "SELECT * FROM users WHERE id = $sessionId"));
?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Обновление</title>
    <link rel="stylesheet" href="styles.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
  </head>
  <body>
    <form class="form" id = "form" action="" enctype="multipart/form-data" method="post">
      <div class="upload">
        <?php
        $id = $user["id"];
        $image = $user["image"];
        ?>
        <img src="img/<?php echo $image; ?>" width = 125 height = 125 title="<?php echo $image; ?>">
        <div class="round">
          <input type="hidden" name="id" value="<?php echo $id; ?>">
          <input type="hidden" name="name" value="<?php echo $name; ?>">
          <input type="file" name="image" id = "image" accept=".jpg, .jpeg, .png">
          <i class = "fa fa-camera" style = "color: #fff;"></i>
        </div>
      </div>
    </form>
    <script type="text/javascript">
      document.getElementById("image").onchange = function(){
          document.getElementById("form").submit();
      };
    </script>
    <?php
    if(isset($_FILES["image"]["name"])){
      $id = $_POST["id"];
      $name = $_POST["name"];

      $imageName = $_FILES["image"]["name"];
      $imageSize = $_FILES["image"]["size"];
      $tmpName = $_FILES["image"]["tmp_name"];

      // Image validation
      $validImageExtension = ['jpg', 'jpeg', 'png'];
      $imageExtension = explode('.', $imageName);
      $imageExtension = strtolower(end($imageExtension));
      if (!in_array($imageExtension, $validImageExtension)){
        echo
        "
        <script>
          alert('Invalid Image Extension');
        document.location.href = 'addFile.php';
        </script>
        ";
      }
      elseif ($imageSize > 1200000){
        echo
        "
        <script>
          alert('Image Size Is Too Large');
        document.location.href = 'addFile.php';
        </script>
        ";
      }
      else{
        $newImageName = $name . " - " . date("Y.m.d") . " - " . date("h.i.sa"); // Generate new image name
        $newImageName .= '.' . $imageExtension;
        $query = "UPDATE users SET image = '$newImageName' WHERE id = $id";
        mysqli_query($link, $query);
        move_uploaded_file($tmpName, 'img/' . $newImageName);
        echo
        "
        <script>
        document.location.href = 'addFile.php';
        </script>
        ";
      }
    }
    ?>
  </body>
</html>


подключение к базе:
<?php 
require "rb/rb.php";
R::setup('mysql:host=localhost;dbname=penguin_rus',
        'root', 'root');
if ( !R::testConnection() ) 
{
  exit('Нет подключения к Базе данных!');
}
R::close();
session_start();

?>


А если подключаться к базе данных через :
$link = mysqli_connect($dbhost, $username, $password, $dbname);

Код работает , фото загружается, обновляется и выводится;
но я же хочу через RedBean подключение к БД.
  • Вопрос задан
  • 46 просмотров
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
но я же хочу через RedBean подключение к БД
И кто Вам мешает. Почитайте документацию RedBean в части взаимодействия с базой данных
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы