Brak zapisu wyników do tabeli w bazie danych

0

Witam

Oto mój kod:

if (!isset($_SESSION["dane"]) ){
$Login=isset ($_POST['Log']) ? strip_tags($_POST['Log']) : NULL;
$Password=isset($_POST['Password']) ? strip_tags($_POST['Password']) : NULL;
$Mail=isset ($_POST['mail']) ? strip_tags($_POST['mail']) : NULL;
    if (empty($Login) || empty($Password) || empty($Mail)){
        echo '<div> Wypelnij wszystkie pola </div>';
    }
    else{
        $mysqli = new mysqli('localhost', 'root', '', 'dane');
        if (mysqli_connect_errno()) {
            printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }
        else {
            $stmt1 = $mysqli->prepare("SELECT Id FROM loginy WHERE Login=(?)");
        $stmt1->bind_param('s', $Login);
        $stmt1->execute();
        $stmt1->store_result();
        if ($stmt1->num_rows() == 1) {
            $stmt1->close();
            echo 'Login o tej nazwie już istnieje';
			$stmt2 = $mysqli->prepare ("INSERT INTO loginy VALUES (?,?,?,?,?)");
			$id=NULL;
                        $Rola='user';
			$stmt2->bind_param ('dssss', $id, $Login, $Mail, $Password, $Rola);
			if ($stmt2->execute()) {
                echo 'Rejestracja pomyslna,  <a href=Login.php>przejdz do Logowania</a>';

			}
		}
	}
}
}
require ('Rejestracja.html'); 

Problem polega na tym że łączy się z bazą danych lecz nie zapisuje wyników do tabeli. Ktoś wie co jest nie tak??

0

jakiś błąd ci wyświetla? Czy dochodzi do momentu, gdy executujesz zapytanie "INSERT"?

PS.
Staraj się nie korzystać w SQL'ach pytajników tylko jakiś nazw, np :haslo, :user SQL staje się bardziej czytelny.

$statment = $db->prepare("INSERT INTO loginy (username, password) VALUES(:username, :password)");

$statment->execute(array(
":password" => $password,
":username" => $username
))

Nie musisz liczyć kolejności parametrów. Powiedzmy że usuniesz którąś kolumne, to musisz analizować cały fragment kodu.

AAAHAAAAA

Nie rejestruje się , bo nie ma prawa by doszło do warunku gdzie executujesz. Sformatuj kod, i zbadaj sobie warunki. Zdebuguj, dlaczego tam nie wchodzi kompilator.

<?php

if (!isset($_SESSION["dane"])) {
    $Login = isset($_POST['Log']) ? strip_tags($_POST['Log']) : NULL;
    $Password = isset($_POST['Password']) ? strip_tags($_POST['Password']) : NULL;
    $Mail = isset($_POST['mail']) ? strip_tags($_POST['mail']) : NULL;
    if (empty($Login) || empty($Password) || empty($Mail)) {
        echo '<div> Wypelnij wszystkie pola </div>';
    } else {
        $mysqli = new mysqli('localhost', 'root', '', 'dane');
        if (mysqli_connect_errno()) {
            printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        } else {
            $stmt1 = $mysqli->prepare("SELECT Id FROM loginy WHERE Login=(?)");
            $stmt1->bind_param('s', $Login);
            $stmt1->execute();
            $stmt1->store_result();
            if ($stmt1->num_rows() == 1) { //pkt1. - jesli uzytkownik istnieje
                $stmt1->close();
                echo 'Login o tej nazwie już istnieje'; //to wyswietlasz ze login istnieje
                $stmt2 = $mysqli->prepare("INSERT INTO loginy VALUES (?,?,?,?,?)"); // jesli istnieje, to po kij dodajesz wpis o takim loginie znów? Chyba powinno to byc w else względnie pkt 1
                $id = NULL; 
                $Rola = 'user';
                $stmt2->bind_param('dssss', $id, $Login, $Mail, $Password, $Rola);
                if ($stmt2->execute()) {
                    echo 'Rejestracja pomyslna,  <a href=Login.php>przejdz do Logowania</a>';
                }
            }
        }
    }
}
require ('Rejestracja.html');

0

Dziękuję. Faktycznie nie zauważyłem tego ale mimo wszystko nie działa. Wchodzę na stronę, wpisuję dane wciskam submit i nic się nie dzieje. Resetuje mi tylko pola tekstowe i tyle.

Tak po zmianach kod wygląda:

$stmt1 = $mysqli->prepare("SELECT Id FROM loginy WHERE Login=(?)");
        $stmt1->bind_param('s', $Login);
        $stmt1->execute();
        $stmt1->store_result();
        if ($stmt1->num_rows() == 1) {
            $stmt1->close();
            echo 'Login o tej nazwie już istnieje';
        }
        else{
                        $stmt1->close();
			$stmt2 = $mysqli->prepare ("INSERT INTO loginy VALUES (?,?,?,?,?)");
			$id=NULL;
                        $Rola='user';
			$stmt2->bind_param ('dssss', $id, $Login, $Mail, $Password, $Rola);
			if ($stmt2->execute()) {
                echo 'Rejestracja pomyslna,  <a href=Login.php>przejdz do Logowania</a>';

			} 
0

Call to a member function execute() on a non-object
Taki problem się pojawia. Czytałem trochę o tym ale nie umiem sobie z tym poradzić.

<?php
error_reporting(-1);
require ('Rejestracja.html');
if (!isset($_SESSION["dane"]) ){
$Login=isset ($_POST['Log']) ? strip_tags($_POST['Log']) : NULL;
$Password=isset($_POST['Password']) ? strip_tags($_POST['Password']) : NULL;
    if (empty($Login) || empty($Password)){
        echo '<div> Wypelnij wszystkie pola </div>';
    }
    else{
        $mysqli = new mysqli('localhost', 'root', '', 'dane');
        if (mysqli_connect_errno()) {
            printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }
        else {
        $stmt1 = $mysqli->prepare("SELECT Id FROM logi WHERE Login=(?)");
        $stmt1->bind_param('s', $Login);
        $stmt1->execute();
        $stmt1->store_result();
        if ($stmt1->num_rows() == 1) {
            $stmt1->close();
            echo 'Login o tej nazwie już istnieje';
        }
        else{
                        $stmt1->close();
			$stmt2 = $mysqli->prepare ("INSERT INTO logi (Login,Password,Rola) VALUES (:Login, :Password, :Rola)");
                        $Rola='user';
                        }
			if ($stmt2->execute(array(
                                ":Login" => $Login,
                                ":Password" => $Password,
                                ":Rola" => $Rola))) 
                echo 'Rejestracja pomyslna,  <a href=Login.php>przejdz do Logowania</a>';
			}
		}
	} 

Zrobiłem jak proponowałeś żeby usunąc te pytajniki (trochę pozmieniałem bazę danych). Nie wiem czy tu dobrze to robię. W tabeli mam jescze kolumne Id która się auto incrementuje i nie wiem czy muszą ją dodać w INSERCIE.

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