Home » Php » php – mysql_select_db() expects parameter 2 to be resource, object given

php – mysql_select_db() expects parameter 2 to be resource, object given

Posted by: admin July 12, 2020 Leave a comment

Questions:

I’m new in using PHP. I made something simple to connect to MySQL and select a database:

$conn = mysqli_connect($db_host, $db_admin, $db_pass) or die(mysql_error());
// these variables are previously declared and initialized 

$selected_db = mysql_select_db($db_name, $conn) or die(mysql_error());

When I tested it, I got a successfully-established connection and the following warning:

mysql_select_db() expects parameter 2 to be resource, object given 

Why did this happen? How can I fix it?

How to&Answers:

You are using both mysqli and mysql simply change

mysql_select_db()

With

mysqli_select_db

Reference http://php.net/manual/en/mysqli.select-db.php

updated

When you use mysql_select_db you are supposed to use mysql api and so you have to exatibilish connection to database with mysql sintax mysql_connect Reference

Mysql is now deprecated so it’s correct either to use mysqli or PDO

Answer:

In addition to using mysqli_* consistently (as mentioned in Fabio’s answer), there is an additional problem (and a suggestion):

  • While the parameter order in mysql_select_database are database name, connection, the order of parameters in mysqli_select_db are connection, database name.

    mysqli_select_db($conn, $db_name);
    
  • As a suggestion, mysqli_connect includes an optional fourth parameter to connect to a particular database. This would allow you to avoid calling mysql_select_db altogether.

    $conn = mysqli_connect($db_host, $db_admin, $db_pass, $db_name)
        or die(mysqli_connect_error());
    

Answer:

You have to change mysql_select_db to mysqli_select_db as pointed out by Fabio but you’ll get an error

mysqli_select_db() expects parameter 1 to be mysqli, string given

For someone experiencing this, reverse the order of parameters, like for in this case give

$selected_db = mysqli_select_db($conn, $db_name)