Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PDO i Class] zapytanie select z parametrem
molik
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.04.2017

Ostrzeżenie: (0%)
-----


Na wstępie witam wszystkich bardzo serdecznie!

Jestem początkujący jeśli chodzi o obiektówkę, dlatego też proszę o wyrozumiałość...
Mój problem polega na zapytaniu select z parametrem... Oczywiście wiem, że nie nie powinno tak wyglądać, ale próbuje już wszystkiego..

Zapytanie SELECT powinno wyglądać tak:

  1.  
  2. $sql = 'SELECT * FROM nazwa_tabeli';
  3. $result = $pdo->query(sql);
  4.  


Tyle wiem, ale co jeżeli chcę wprowadzić do niej parametr i nie wpisywać go bezpośrednio gdyż istnieje zagrożenie SQL Injection... ale już naprawdę nie mam na to pomysłu.. może Wy mi w tym pomożecie..
Wymyśliłem sobie oto taki zapis (konkretnie chodzi o metodę checkIfIsset()):

  1. $sql = 'SELECT nrComp FROM 08925902_k1.employers WHERE nrComp = :nrComp';
  2. $s = $pdo->prepare($sql);
  3. $s->bindValue(':nrComp', $this->nrComp);
  4. $s->execute();
  5. $this->employers = count($s);


Jak widać nie działa... bardzo Was proszę o pomoc...

Oto cały kod klasy:

  1. <?php
  2.  
  3. class RegisterEmployer{
  4. public $nrComp;
  5. public $firstName;
  6. public $lastName;
  7. public $password;
  8. public $employers;
  9.  
  10. public function __construct($nrComp, $firstName, $lastName, $password){
  11. $this->nrComp = $nrComp;
  12. $this->firstName = $firstName;
  13. $this->lastName = $lastName;
  14. $this->password = $password;
  15. }
  16.  
  17. public function wypiszDane(){
  18. echo '<p class="bg-info">'
  19. .$this->nrComp.'<br>'
  20. .$this->firstName.'<br>'
  21. .$this->lastName.'<br>'
  22. .$this->password.
  23. '</p>';
  24. }
  25.  
  26. public function registerEmployer(){
  27.  
  28. self::checkIfIsset();
  29.  
  30. if($this->employers > 0){
  31. echo '<p class="bg-warning">Taki numer komputerowy już istnieje w bazie danych.</p>';
  32. exit();
  33. }else{
  34. try {
  35. include 'inc/database.php';
  36. $sql = 'INSERT INTO 08925902.employers SET
  37. nrComp = :nrComp,
  38. firstName = :firstName,
  39. lastName = :lastName,
  40. password = :password
  41. ';
  42. $s = $pdo->prepare($sql);
  43. $s->bindValue(':nrComp', $this->nrComp);
  44. $s->bindValue(':firstName', $this->firstName);
  45. $s->bindValue(':lastName', $this->lastName);
  46. $s->bindValue(':password', SHA1($this->password));
  47. $s->execute();
  48. } catch (PDOException $e) {
  49. echo '<p class="bg-warning">'.$e->getMessage() .'<br>'.$e->getLine().'</p>';
  50. exit();
  51. }
  52. echo '<p class="bg-success">Dodano użytkownika do bazy danych.</p>';
  53. }
  54.  
  55. }
  56.  
  57. public function checkIfIsset(){
  58. try {
  59. include 'inc/database.php';
  60. $sql = 'SELECT nrComp FROM 08925902.employers WHERE nrComp = :nrComp';
  61. $s = $pdo->prepare($sql);
  62. $s->bindValue(':nrComp', $this->nrComp);
  63. $s->execute();
  64. $this->employers = count($s);
  65. } catch (PDOException $e) {
  66. echo '<p class="bg-warning">'.$e->getMessage() .'<br>'.$e->getLine().'</p>';
  67. exit();
  68. }
  69.  
  70. }
  71. }
  72.  
  73. ?>


kod uruchomienia:

  1. <?php
  2. if(isset($_POST['addEmployer'])){
  3. echo '<p class="bg-info">Przejdź do procedury dodawania pracownika.</p>';
  4.  
  5. $employer = new RegisterEmployer($_POST['nrComp'], $_POST['employerFirstName'], $_POST['employerLastName'], $_POST['employerPass']);
  6. $employer->registerEmployer();
  7. }else{
  8. include 'sites/form_registerEmployer.php';
  9. exit();
  10. }
  11.  
  12.  
  13. ?>


Ten post edytował molik 4.04.2017, 02:03:33
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 04:31