Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Identyczne parametry w bind_param()
Grandalf00
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 23.01.2016

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


Witam! Mam taki oto kod:

  1. $reply2 = $dbc->prepare("INSERT INTO tabela (username,attribute,op,value) VALUES (?,'Redirection','==','http://www.strona.pl/sprawdz.php?user=')");
  2. $reply2->bind_param('s',$username);
  3. $reply2->execute();
  4. $reply2->close();


Chciałbym aby w adresie na końcu też była dodana nazwa użytkownika. Kombinowałem z dodaniem ? na wszelkie sposoby
  1. VALUES (?,'Redirection','==','http://www.strona.pl/sprawdz.php?user=')") <-- ?
  2. $reply2->bind_param('ss',$username, $username);


Lecz dostaje błąd:
  1. PHP Fatal error: Call to a member function bind_param() on a non-object


Z kodem poradziłem sobie w końcu na około, ale ciekawi mnie czy w ogóle da się to jakoś zrobić.
Go to the top of the page
+Quote Post
rad11
post
Post #2





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


A nie możesz stworzyć zmiennej do tego adresu ze zmienna $username i zbindować to w zapytaniu?
Go to the top of the page
+Quote Post
Grandalf00
post
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 23.01.2016

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


No mogę i poniekąd tak zrobiłem, ale moje pytanie jest jak to zrobić w obecnej formie, o ile się da, to jaka miałaby być składnia.
Go to the top of the page
+Quote Post
!*!
post
Post #4





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Inna forma nie ma sensu.
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Dostępne masz dwie opcje.

1. Łączysz tekst po stronie PHP:
  1. $reply2 = $dbc->prepare("INSERT INTO tabela (username,attribute,op,value) VALUES (?,'Redirection','==',?)");
  2. $reply2->bind_param('s',$username);
  3. $reply2->bind_param(2, 'http://www.strona.pl/sprawdz.php?user=' . $username);

2. Łączysz tekst po stronie bazy:
  1. $reply2 = $dbc->prepare("INSERT INTO tabela (username,attribute,op,value) VALUES (?,'Redirection','==', CONCAT('http://www.strona.pl/sprawdz.php?user=', ?))");
  2. $reply2->bind_param('s',$username);
  3. $reply2->bind_param(2, $username);
(w różnych bazach masz różne funkcje/operatory łączenia tekstu)

Opcja pierwsza jest o tyle lepsza, że dla tego konkretnego zapytania nie musisz używać SQL-a specyficznego dla danej bazy. (http://stackoverflow.com/questions/11403931/what-is-the-difference-between-operator-and-concat-function-in-oracle)

Ten post edytował Crozin 7.06.2016, 14:06:17
Go to the top of the page
+Quote Post

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: 3.10.2025 - 18:39