Merna
Merna

Reputation: 269

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

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?

Upvotes: 7

Views: 55517

Answers (3)

lu5er
lu5er

Reputation: 3564

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)

Upvotes: 0

Chris Forrence
Chris Forrence

Reputation: 10094

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());
    

Upvotes: 0

Fabio
Fabio

Reputation: 23500

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

Upvotes: 20

Related Questions