View Full Version : How do I change from mysql to mysqli ?

02-01-2013, 03:07 PM
I have a script that is written in PHP and MySql. It works well.

However, I think it is now time to convert to MySqli.

I am using: php-5.3.3-14.el6_3.x86_64 and mysql-5.1.66-2.el6_3.x86_64 on CentOS release 6.3 (Final)

I have a global.php file which is called in my add.php page
My global.php contains:

//connect to the database
if(!($link=mysql_pconnect($hostName, $userName, $password))){
displayErrMsg(sprintf("Error connecting to the host %s, by user %s", $hostName, $userName));

//select the database
if(!mysql_select_db($databaseName, $link)){
displayErrMsg(sprintf("Error in selecting the %s database", $databaseName));
displayErrMsg(sprintf("error: %d %s", mysql_errno($link), mysql_error($link)));
My add.php page contains:

$qry = "INSERT INTO " . $vars["table directory"] . " "; etc...


if(!($results = mysql_query($qry, $link))){
displayErrMsg(sprintf("Error in executing %s query", $qry));
displayErrMsg(sprintf("error:%d %s", mysql_errno($link), mysql_error($link)));

Can anybody advice if it is a straight forward job to convert ???

I have a few scripts, that were written over the years, that could do with converting.


02-01-2013, 08:39 PM
This is pretty good so far for easy conversions with procedural mysqli.
Connection is easier:

$link = mysqli_connect($hostName, $userName, $password, $databaseName);
if (!$link)
displayErrMsg(sprintf("Error connecting to the host %s, by user %s on database %s. Cause: %s (%d)", $hostName, $userName, $databaseName, mysqli_connect_error(), mysqli_connect_errno()));

There is no separate database selection mechanism anymore.

As for querying and errors, without going into prepared statements, you can almost use what you have. The mysql_query is replaced with mysqli_query, and the parameters are reversed. So the $link is ALWAYS required and is the first argument.
The error calls are the same, just again with mysqli_error/errno instead of the mysql_error/errno.
So your previous use of $link as a requirement, will actually help you with the conversion process.

02-03-2013, 12:34 PM
Hi Fou-Lu ...
Many thanks for your advise.

I didn't realise how easy it was.
I have tried in the past, but I think that I didn't put $link first, so it didn't work.
I made the same mistake this time, but went back to your post a read it more closely.

I have now changed my current project to mysqli.
I will now change all my other database projects.

Many thanks,