sprawdzanie czy rekord istnieje

0

Witam

Mam sobie taki kod:

<?php
require_once("config.php");

if(isset($_POST['register'])){

  $email = '[email protected]';    //trim($_POST['email']);
  $password = trim($_POST['password']);
  $hashPassword = password_hash($password,PASSWORD_BCRYPT);



$query = "SELECT email FROM user WHERE email='$email'";

if ($result = mysqli_query($db,$query)) {

     $wiersze = mysqli_num_rows($result);
     if ($wiersze > 0)
     {

     while ($row = $result->fetch_assoc()) {
        $wynik = $row["email"];

     }
    echo 'jest';
    echo '<br>wiersze = ' . $wiersze . 'email = '.$wynik['email'];
     }
     else
     {
         echo '<br>wiersze = ' . $wiersze;
        echo ' nie ma '; 
     } 
}  else {
     echo 'blad zapytania';
}       

	

		
}
?>

<h1>Formularz rejestracyjny</h1>
<form method="post">
  <input type="text" name="email" placeholder="Email">
  <input type="password" name="password" placeholder="Password">
  <button type="submit" name="register">Zarejestruj</button>
</form>

Bazowałem na tym co napisali tutaj

Ale niestety wywala mi taki błąd:


Warning: mysqli_query() expects parameter 1 to be mysqli, object given in /var/www/vhosts/zmarekz.5v.pl/httpdocs/registration.php on line 14
blad zapytania

Co robię nie tak ? Proszę o pomoc.

0

Co to jest $db? W jaki sposób tę zmienną inicjujesz?

0

$db to łączenie z bazą danych w pliku config.php, który jest dołączany do tego kodu.
Połączenie z bazą danych działa i mogę dodawać nawet dane do bazy ale nie mogę wyszukiwać.

$db = new PDO('mysql:host=localhost;dbname=nazwa_uzytkownika', 'nazwa_bazy', 'haslo'); // oczywiście dane tu podane są przykładowe a całość mieści się na darmowym serwerze. 
0

PDO oraz mysqli to dwa różne rozszerzenia i nie możesz ich mieszać ze sobą.

Albo korzystasz w całości z PDO, albo w całości z mysqli, co zresztą dosyć sensownie jest opisane w komunikacie błędu:

mysqli_query() expects parameter 1 to be mysqli, object given

Funkcja oczekuje mysqli, lecz otrzymała obiekt (PDO).

0

Czyli jak to najlepiej było by zrobić ? Jestem zielony w tym temacie i chciałem spróbować.

0

Przerzuć się w całości na PDO: https://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO, jest wygodniejsze w użyciu.

0

ok na razie dziękuje. W razie pytań odezwę się.

0

Twój kod jest podatny na atak SQLInjection: https://pl.wikipedia.org/wiki/SQL_injection

Korzystaj z PDO i bindowania argumentów, albo w odpowiedni sposób parsuj $_POST['email']

0

Jeszcze raz dziękuję za pomoc. To co chciałem działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1