Krátká odpověď je ne , funkce nejsou ekvivalentní.
Dobrou zprávou je, že existuje nástroj pro převod, který vám pomůže, pokud máte mnoho hovorů/projektů ke změně. To umožní, aby vaše skripty fungovaly okamžitě.
https://github.com/philip/MySQLConverterTool
Je to rozvětvená verze původní verze Oracle a je košer.
To znamená, že není příliš obtížné aktualizovat váš kód a možná budete chtít migrovat na objektově orientovanou metodologii ...
1) Připojení
Pro všechny záměry a účely potřebujete novou funkci připojení, která připojení uloží například jako proměnnou PHP;
$mysqli = new mysqli($host, $username, $password, $database);
Všimněte si, že jsem uložil připojení do $mysqli
. Můžete uložit do $db
nebo cokoli chcete, ale měli byste to použít v celém kódu, abyste odkazovali na připojení.
Před otevřením připojení nezapomeňte povolit hlášení chyb pro mysqli;
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
2) Dotaz
Poznámka:Před SQL injection byste se měli chránit připravenými příkazy, které jsou dostupné v MySQLi. Podívejte se na Jak mohu zabránit vkládání SQL v PHP? , ale zde popíšu jen základy.
Nyní musíte do dotazu zahrnout připojení jako argument a další mysqli_
funkcí. V procedurálním kódu je to první argument, v OO jej zapisujete jako metodu třídy.
Postup:
$result = mysqli_query($mysqli, $sql);
OO:
$result = $mysqli->query($sql);
3) Načíst výsledek
Načítání výsledku je podobné starému mysql_
funkce v procedurálním;
while ($row = mysqli_fetch_assoc($result))
ale jako $result
je nyní objekt v mysqli, můžete použít volání funkce object;
while ($row = $result->fetch_assoc())
4) Zavřít připojení
Takže jako dříve musíte zahrnout spojení do funkce close; jako argument v procesu;
mysqli_close($mysqli);
a jako objekt, na kterém spustíte funkci v OO;
$mysqli->close();
Byl bych tu navždy, kdybych je všechny prošel, ale chápete. Podívejte se na dokumentaci Pro více informací. Nezapomeňte převést jakékoli funkce uzavření připojení, uvolnění výsledku nebo chyb a počítání řádků.
Základním pravidlem je, že pro funkce, které využívají připojení k databázi, jej musíte zahrnout do funkce nyní (buď jako první argument v procedurální nebo jako objekt, který používáte k volání funkce v OO), nebo pro sadu výsledků stačí změnit funkci na mysqli_
nebo použijte výslednou sadu jako objekt.