Kiedy wywołam bind_param, jeśli używasz przygotowanych instrukcji MySQLi w pętli?
Próbuję nauczyć się używać przygotowanych instrukcji z MySQLi do wstawiania danych.
Mimo że przygotowane instrukcje są chwalone za ich zdolność do wielokrotnego wykonywania podobnych instrukcji, nie mogę znaleźć przykładów wykonywania wielu instrukcji w pętli za pomocą MySQLi. Jestem szczególniezdezorientowany co do następujących:
czy zadzwonićbind_param
przed moją pętlą lub wewnątrz mojej pętliczy przypisać wartości do moich zmiennych przed czy po wywołaniubind_param
Większość samouczków na temat przygotowanych instrukcji używa PDO. W przypadku PDO można przekazać tablicę wartości parametrówexecute
, eliminując potrzebę dzwonieniabindParam
. Nie dotyczy to MySQLi.
Podręcznik PHPmysqli_prepare
wpis ma przykład pokazujący następującą kolejność operacji:
Sądząc po powyższym, założyłem, że będę musiał wywołać instrukcję bind w mojej pętli.
Jednak podręcznik PHPmysqli_stmt_execute
wpis ma przykład pokazujący następującą kolejność operacji:
Zauważ, że jedna rzecz, której ten przykład nie pokazuje, to miejsce, w którym zmienne są po raz pierwszy zadeklarowane. Myślałem, że przekazywanie niezadeklarowanych zmiennych dobind_param
wygeneruje powiadomienie. W końcu odkryłem, że mogę przekazać niezdefiniowane zmienne, ponieważ są one przekazywane przez referencję.
Pytanie:
Czy jedna kolejność operacji jest preferowana nad drugą? A może zależy to tylko od tego, co robisz? Czy są jakieś problemy z jednym lub drugim?
Uwaga: Kod już używa MySQLi i nie chcę przełączać się na PDO (przełączanie jest obecnie poza zakresem tego projektu).