Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Newsletter z funkcji, Dodawanie maila do bazy
-Maxxuell-
post 22.11.2013, 09:22:25
Post #1





Goście







Cześć wszystkim,
mógłby mi ktoś pomóc. Chcę zrobić inserta do bazy danych
w bazie mam 3 pola ID, nazwa_email, aktywny

zrobiłem funkcję ale nie wiem czy dobrą

  1. FUNCTION insertEmail($email_name)
  2. {
  3. $dbh = connect();
  4. $query = 'INSERT INTO Baza_email (ID, nazwa_email, aktywny) VALUES (1, '.$email_name.',33)';
  5. $stmt = $dbh->prepare($query);
  6. $stmt->execute();
  7. }


a w kodzie PHP mam coś takiego

  1. <div class="newsletter">
  2. <?php insertEmail($email_name); ?>
  3. <form method="post" action="">
  4. e-mail: <input type="text" name="email_name"> <input name="enter_mail" type="submit" value="Wyślij" />
  5. </form>
  6. </div>


Pewnie coś naknociłem i nie mam pojęcia co....
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
SmokAnalog
post 22.11.2013, 09:49:12
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Niestety sporo:
  1. Wywołujesz funkcję insertEmail bez sensu, powinno być np. tak:
    1. if(isset($_POST['email_name'])) {
    2. insertEmail($_POST['email_name']);
    3. }
  2. Czy pole ID jest kluczem? Jeśli tak, to nie możesz mu przypisywać wartości 1 cały czas, bo muszą one być unikalne. Prawidłowe zapytanie wyglądałoby wtedy np. tak:
    1. INSERT INTO Baza_email (nazwa_email, aktywny) VALUES ('ja@mojastrona.pl', 33);
  3. No właśnie, adres e-mail masz bez cudzysłowów w zapytaniu - to też nie zadziała
  4. No i na koniec - zapoznaj się z tematem "prepared statements". Używasz ich, ale wykorzystujesz ich sensu. Adres e-mail podaj we właściwy sposób w zapytaniu, jako token.
Go to the top of the page
+Quote Post
-Maxxuell-
post 22.11.2013, 09:59:31
Post #3





Goście







Zmieniłem teraz tak:

  1. <div class="category_product_detail_main_rand" itemscope itemtype="http://schema.org/Product">
  2. <?php
  3. if(isset($_POST['email_name'])) {
  4. insertEmail($_POST['email_name']);
  5. }
  6. ?>
  7. <form method="post" action="">
  8. e-mail: <input type="text" name="email_name"> <input name="enter_mail" type="submit" value="Wyślij" />
  9. </form>
  10. </div>



  1. FUNCTION insertEmail($email_name)
  2. {
  3. $dbh = connect();
  4. $query = 'INSERT INTO Baza_email (nazwa_email, aktywny) VALUES ('.$email_name.', 33)';
  5. $stmt = $dbh->prepare($query);
  6. $stmt->execute();
  7. }


ale bez efektów... sad.gif
Go to the top of the page
+Quote Post
SmokAnalog
post 22.11.2013, 10:05:35
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Napisałem Ci o czterech błędach. Naprawiłeś dwa i się dziwisz, że nie działa.
Go to the top of the page
+Quote Post
-Maxxuell-
post 22.11.2013, 10:09:37
Post #5





Goście







Faktycznie przeoczyłem.
Super jesteś wielki!! Dzięki smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:13