Košík je prázdný

Vývojáři aplikací v PHP se mohou setkat s chybou "Fatal error: Call to undefined function mysql_query()", která se objevuje při pokusu o použití zastaralé funkce mysql_query(). Tato chyba signalizuje, že vaše aplikace se pokouší použít funkci pro práci s databází MySQL, která již není podporována v novějších verzích PHP. Od PHP 5.5.0 bylo rozšíření MySQL označeno jako zastaralé a odstraněno v PHP 7.0.0. V tomto článku se podíváme na to, jak se s touto chybou vypořádat, a na nejlepší postupy pro modernizaci vašeho kódu.

Identifikace problému

Chybová zpráva "Fatal error: Call to undefined function mysql_query()" naznačuje, že vaše aplikace se snaží volat funkci mysql_query(), která již není dostupná ve vaší verzi PHP. Prvním krokem k řešení tohoto problému je identifikace všech míst ve vašem kódu, kde se používají funkce mysql_*.

Přechod na MySQLi nebo PDO

Aby bylo možné aplikaci aktualizovat a zbavit se této chyby, je doporučeno přejít na rozšíření MySQL Improved (MySQLi) nebo PHP Data Objects (PDO). Obě tato rozšíření nabízejí lepší funkcionality, včetně podpory pro přípravné dotazy (prepared statements), které zvyšují bezpečnost aplikace tím, že pomáhají předcházet útokům SQL injection.

Přechod na MySQLi

MySQLi je rozšíření, které poskytuje funkcionality specifické pro MySQL. Přechod z mysql na mysqli obvykle vyžaduje několik změn v kódu, včetně změny funkcí pro připojení, vykonávání dotazů a práci s výsledky. Příklad přechodu na mysqli:

// Starý způsob připojení pomocí mysql
$link = mysql_connect('localhost', 'username', 'password');
mysql_select_db('database_name', $link);

// Nový způsob připojení pomocí mysqli
$link = new mysqli('localhost', 'username', 'password', 'database_name');

// Starý způsob vykonávání dotazu
$result = mysql_query('SELECT * FROM table_name');

// Nový způsob vykonávání dotazu pomocí mysqli
$result = $link->query('SELECT * FROM table_name');

Přechod na PDO

PDO poskytuje univerzální rozhraní pro přístup k různým databázovým systémům. Přechod na PDO může vyžadovat větší změny v kódu, ale poskytuje větší flexibilitu a bezpečnost. Příklad přechodu na PDO:

// Starý způsob připojení pomocí mysql
$link = mysql_connect('localhost', 'username', 'password');
mysql_select_db('database_name', $link);

// Nový způsob připojení pomocí PDO
$pdo = new PDO('mysql:host=localhost;dbname=database_name', 'username', 'password');

// Starý způsob vykonávání dotazu
$result = mysql_query('SELECT * FROM table_name');

// Nový způsob vykonávání dotazu pomocí PDO
$stmt = $pdo->query('SELECT * FROM table_name');

Přechod z zastaralého mysql rozšíření na mysqli nebo PDO není jen o odstranění chyby "Fatal error: Call to undefined function mysql_query()". Je to také o zlepšení bezpečnosti a efektivity vaší aplikace. Modernizace vašeho kódu vám umožní využívat nejnovější funkce PHP a zároveň zajistí lepší kompatibilitu s budoucími verzemi PHP.