2013-04-14 28 views
7

Tôi mới sử dụng PHP. Tôi đã thực hiện một cái gì đó đơn giản để kết nối với MySQL và lựa chọn một cơ sở dữ liệu:mysql_select_db() hy vọng tham số 2 là tài nguyên, đối tượng được cung cấp

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

Khi tôi thử nghiệm nó, tôi đã kết nối thành công thành lập và các cảnh báo sau đây:

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

Tại sao điều này xảy ra? Làm thế nào tôi có thể sửa chữa nó?

Trả lời

19

Bạn đang sử dụng cả hai mysqlimysql chỉ cần thay đổi

mysql_select_db()

Với

mysqli_select_db 

Referencehttp://php.net/manual/en/mysqli.select-db.php

updated

Khi bạn sử dụng mysql_select_db bạn có nghĩa vụ phải sử dụng mysql api và vì vậy bạn phải exatibilish kết nối đến cơ sở dữ liệu với mysql sintax mysql_connectReference

Mysql hiện đang bị phản đối vì vậy nó đúng hoặc sử dụng mysqli hoặc PDO

+0

yeah đó là sai lầm :) cảm ơn bạn, bạn có thể giải thích sự khác biệt pl giảm bớt :) ? – Merna

+0

Chúng là hai API khác nhau để liên lạc với mysql. Các hàm 'mysql_ *' không được dùng nữa, sử dụng 'mysqli_ *'. – Maerlyn

+0

xong, thx ...... – Merna

0

Trong Ngoài việc sử dụng mysqli_ * một cách nhất quán (như được đề cập trong Fabio's answer), có một vấn đề khác (và gợi ý):

  • Trong khi thứ tự tham số trong mysql_select_database là tên cơ sở dữ liệu, kết nối, thứ tự các tham số trong mysqli_select_db là kết nối, tên cơ sở dữ liệu.

    mysqli_select_db($conn, $db_name); 
    
  • Như một gợi ý, mysqli_connect bao gồm một tham số tùy chọn thứ tư để kết nối với một cơ sở dữ liệu cụ thể. Điều này sẽ cho phép bạn tránh gọi số mysql_select_db hoàn toàn.

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

Bạn phải thay đổi mysql_select_db-mysqli_select_db như chỉ ra bởi Fabio nhưng bạn sẽ nhận được một lỗi

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

Đối với một ai đó trải qua này, đảo ngược thứ tự của các tham số, như tại trường hợp này cung cấp cho

$selected_db = mysqli_select_db($conn, $db_name) 
Các vấn đề liên quan