Dane wejściowe:
( [table] => players ( [0] => name [1] => password [2] => email ) ( [:name] => tester [:password] => 72a3dcef165d9122a45decf13ae20631 [:email] => test@test.pl ) )
Oczywiście dane są odpowiednio wrzucane do poniższej funkcji:
function insert($table = "", $fields = [], $data = []){ if($table == ""){ pr("First variable (table) is required and cannot be empty."); pr("Fields are not defined."); pr("Data is not defined."); } else { $placeholders = []; foreach($data as $placeholder => $value){ $placeholders[] = $placeholder; } $stmt = $this->connection->prepare("INSERT INTO {$table} ({$fields}) VALUES ({$placeholders})"); foreach($data as $placeholder => $value){ $bind = $stmt->bindValue($placeholder, $value); } if($stmt->execute()){ return true; } else { return false; } } }
Zapytanie które widzę po użyciu "print_r" to:
INSERT INTO players (name,password,email) VALUES (:name,:password,:email)
Zapytanie które powinno się wykonać:
INSERT INTO players (name,password,email) VALUES ("tester", "72a3dcef165d9122a45decf13ae20631", "test@test.pl")
Wprowadziłem zapytanie ręcznie i wszystko działa, błąd jest prawdopodobnie z bindowaniem wartości.
Na funkcję "pr" nie musicie patrzeć, to po prostu print_r otoczony <pre></pre>, używam go do podglądu wartości.
Pozdrawiam,
redirdoolb