Tôi có thể kết hợp các API MySQL trong PHP không?

Jul 06 2013

Tôi đã tìm kiếm trên mạng và cho đến nay những gì tôi thấy là bạn có thể sử dụng mysql_mysqli_cùng nhau có nghĩa là:

<?php
$con=mysqli_connect("localhost", "root" ,"" ,"mysql");

if( mysqli_connect_errno( $con ) ) {
    echo "failed to connect";
}else{
    echo "connected";
}
mysql_close($con);
echo "Done";
?>

hoặc là

<?php
$con=mysql_connect("localhost", "root" ,"" ,"mysql");
if( mysqli_connect_errno( $con ) ) {
    echo "failed to connect";
}else{
    echo "connected";
}
mysqli_close($con);
echo "Done";
?>

Hợp lệ nhưng khi tôi sử dụng mã này, những gì tôi nhận được là:

Connected
Warning: mysql_close() expects parameter 1 to be resource, object given in D:\************.php on line 9
Done

Đối với đầu tiên và giống nhau ngoại trừ với mysqli_close(). Đối với cái thứ hai.

Vấn đề là gì? Tôi không thể sử dụng mysql_mysqlicùng nhau? Hay là nó bình thường? Là cách tôi có thể kiểm tra xem các kết nối có hợp lệ không? (cái if(mysq...))

Trả lời

68 ExplosionPills Jul 06 2013 at 06:53

Không, bạn không thể sử dụng mysqlmysqlicùng nhau. Chúng là các API riêng biệt và các tài nguyên chúng tạo ra không tương thích với nhau.

Có một mysqli_close, mặc dù.

15 Rizier123 Jul 09 2015 at 20:59

Chỉ để đưa ra câu trả lời chung ở đây về cả ba API MYSQL với tài liệu tham khảo:

Bạn không thể trộn lẫn bất kỳ của ba ( mysql_*, mysqli_*, PDO) MYSQL API từ PHP với nhau, nó chỉ không làm việc. Nó thậm chí còn có trong Câu hỏi thường gặp thủ công :

Không thể trộn các phần mở rộng . Vì vậy, ví dụ, chuyển kết nối mysqli tới PDO_MySQL hoặc ext / mysql sẽ không hoạt động .


Bạn cần sử dụng cùng một API MySQL và các chức năng liên quan của nó, từ kết nối đến truy vấn.

2 YourCommonSense Jul 09 2015 at 21:08

Về mặt kỹ thuật, bạn có thể sử dụng bao nhiêu kết nối riêng biệt tùy thích, trong khi vấn đề của bạn chỉ là do lỗi đánh máy - bạn chỉ không thể sử dụng tài nguyên từ một tiện ích mở rộng với các chức năng từ tiện ích khác, điều này khá rõ ràng.

Tuy nhiên, bạn nên tránh nhiều kết nối từ cùng một tập lệnh , bất kể từ một API hay các API khác nhau. Vì nó sẽ tạo gánh nặng cho máy chủ cơ sở dữ liệu của bạn và làm cạn kiệt tài nguyên của nó. Vì vậy, mặc dù về mặt kỹ thuật bạn có thể làm được, nhưng bạn không nên kết hợp các phần mở rộng khác nhau trong mã của mình, hãy tiết kiệm trong thời gian ngắn tái cấu trúc.