Spacedust
Spacedust

Reputation: 1021

Properly detecting mysql higher than 5 on PHP 5.5 with mysqlnd

My application is using the following code to detect mysql higher than 5. It works well with PHP 5.2, 5.3 and 5.4.

The trouble is with PHP 5.5 which uses mysqlnd by default so the script reports mysqlnd 5.0.11-dev - 20120503 - $Id: 40933630edef551dfaca71298a83fad8d03d62d4 $ and cannot detect MySQL properly. I need to make an exception for such version, but I don't know how to.

 echo "<mysql>";
    if(key_exists('mysql', $phpinfo))
    {
        if(key_exists('Client API version', $phpinfo['mysql']))
        {
            $t=explode(".", $phpinfo['mysql']['Client API version']);
            if($t[0]>=5)
                $ok=1;
        else
                $ok=0;
            echo "<val>{$phpinfo['mysql']['Client API version']}</val><ok>$ok</ok>";
        }
        else
           echo "<val></val><ok>0</ok>";
    }
    else
        echo "<val></val><ok>0</ok>";
    echo "</mysql>\n";

Upvotes: 0

Views: 3779

Answers (2)

SteAp
SteAp

Reputation: 11999

Please use this SQL command:

SHOW VARIABLES LIKE "%version%";

Will show something like this:

enter image description here

Upvotes: 2

000
000

Reputation: 27247

You shouldn't be using mysql in 5.5. It is deprecated.

Deprecation of mysql_ functions

PHP functions that start with mysql_ have been deprecated as of PHP 5.5.0. If you are in a position to do so, please consider updating your code to use the MySQLi or PDO extensions instead.

Anyway, use mysqli (which you seem to have in your question tags)

The phpinfo key is: $phpinfo['mysqli']['Client API header version'] rather than $phpinfo['mysql']['Client API version'].

Upvotes: 0

Related Questions