Krótka odpowiedź to nie , funkcje nie są równoważne.
Dobrą wiadomością jest to, że istnieje narzędzie konwertujące, które pomoże ci, jeśli masz dużo połączeń/projektów do zmiany. Umożliwi to natychmiastowe działanie Twoich skryptów.
https://github.com/philip/MySQLConverterTool
Jest to rozwidlona wersja oryginalnej wersji Oracle i jest koszerna.
To powiedziawszy, aktualizacja kodu nie jest zbyt trudna, a mimo to możesz chcieć przejść na metodologię zorientowaną obiektowo...
1) Połączenie
Do wszystkich celów i celów potrzebujesz nowej funkcji połączenia, która zapisuje połączenie jako zmienną PHP, na przykład;
$mysqli = new mysqli($host, $username, $password, $database);
Zauważ, że zapisałem połączenie do $mysqli
. Możesz zapisać do $db
lub cokolwiek chcesz, ale powinieneś używać tego w całym kodzie, aby odwoływać się do połączenia.
Pamiętaj, aby włączyć raportowanie błędów dla mysqli przed otwarciem połączenia;
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
2) Zapytanie
Uwaga:Należy chronić się przed wstrzyknięciem SQL za pomocą przygotowanych instrukcji, które są dostępne w MySQLi. Spójrz na Jak mogę zapobiec wstrzykiwaniu SQL w PHP? , ale omówię tutaj tylko podstawy.
Teraz musisz uwzględnić połączenie jako argument w zapytaniu i inne mysqli_
Funkcje. W kodzie proceduralnym jest to pierwszy argument, w OO piszesz go jak metodę klasy.
Proceduralne:
$result = mysqli_query($mysqli, $sql);
OO:
$result = $mysqli->query($sql);
3) Pobierz wynik
Pobieranie wyniku jest podobne do starego mysql_
funkcjonować w procedurach;
while ($row = mysqli_fetch_assoc($result))
ale jako $result
jest teraz obiektem w mysqli, możesz użyć wywołania funkcji obiektu;
while ($row = $result->fetch_assoc())
4) Zamknij połączenie
Tak jak poprzednio, musisz uwzględnić połączenie w funkcji close; jako argument w procedurze;
mysqli_close($mysqli);
i jako obiekt, na którym uruchamiasz funkcję w OO;
$mysqli->close();
Byłbym tu na zawsze, gdybym przejrzał je wszystkie, ale rozumiesz. Spójrz na dokumentację po więcej informacji. Nie zapomnij przekonwertować żadnych funkcji zamykania połączenia, zwalniania wyników lub błędów i liczenia wierszy, które posiadasz.
Podstawowa zasada jest taka, że dla funkcji korzystających z połączenia z bazą danych należy je teraz uwzględnić w funkcji (jako pierwszy argument w procedurze lub jako obiekt używany do wywołania funkcji w OO) lub jako zestaw wyników możesz po prostu zmienić funkcję na mysqli_
lub użyj zestawu wyników jako obiektu.