Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Has PHP abandoned the MySQL extension?

Tags:

php

Recently the PHP manual started showing the following warning on every mysql function page:

Use of this extension is discouraged. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information...

MySQLi used to be very buggy, but have they improved it so that it's finally worthy of its name? Is that why they're abandoning the MySQL extension and trying to get people to use MySQLi?

Actually, I would like to use MySQLi if it's not buggy anymore. It has more features and it's object oriented.

Any comments on this?

//EDIT: What I want to know is if it's OK to use MySQLi. Or is it still buggy? Should I go with PDO instead?

like image 966
Ilyas Serter Avatar asked Jun 14 '12 22:06

Ilyas Serter


2 Answers

Yes. Since (very) long. We now have mysqli, or better yet, PDO.

I wouldn't lock myself into mysqli, I'd prefer PDO. Beside the easier migration it offers from one database system to another, it also offers better error handling.

What I want to know is if it's OK to use MySQLi. Or is it still buggy?

MySQLi itself is quite bug-free and it's used in production.

Should I go with PDO instead?

If your only argument for using mysqli is its similarity to mysql, then you'd probably not use mysqli to its full potential anyway. If you want to use mysqli to its full potential, then you'd have to start learning "anew" (it's not terribly much to learn, you know). If you start learning some new tool from "scratch", then why not learn the better alternative - PDO, in the first place?

On the other side, PDO is not perfect either. With PDO, you cannot access MySQL specific APIs (such as post-construct set_charset, infile settings, async queries, OUT params from prepared statements). Also, you should set it to do true prepared statements if you need them.

like image 149
Flavius Avatar answered Sep 24 '22 05:09

Flavius


The PHP MySQLi is an MySQL Improved Extension.

The mysqli extension allows you to access the functionality provided by MySQL 4.1 and above.

You can compare both of them at The MySQLi Extension Function Summary.


If you are searching for a future proof solution, object oriented, the way to go is PHP PDO.

The PHP Data Objects (PDO) extension defines a lightweight, consistent interface for accessing databases in PHP. Each database driver that implements the PDO interface can expose database-specific features as regular extension functions.

...

PDO provides a data-access abstraction layer, which means that, regardless of which database you're using, you use the same functions to issue queries and fetch data.

like image 45
Zuul Avatar answered Sep 24 '22 05:09

Zuul