2012-04-14 32 views
7

Ai đó có thể cho tôi biết, khi bạn cập nhật, chèn, xóa .. thì bạn có nên đóng nó như mysqli_stmt::close(); không? Tôi đã kiểm tra hướng dẫn sử dụng PHP và không hiểu những gì close() thực sự làm.Phương thức `close()` của Tuyên bố Mysqli là gì?

Ví dụ:

$stmt = $dbh->prepare("SELECT `user_email` FROM `users` WHERE `user_email` = ? LIMIT 1"); 
$stmt->execute(array($email)); 
$stmt->close(); 

phần tiếp theo của câu hỏi của tôi là, nếu như một ví dụ tôi đã có nhiều truy vấn cập nhật trong một giao dịch sau mỗi execute() cho mỗi truy vấn tôi đang thực hiện trong giao dịch nên tôi đóng chúng riêng lẻ? ... bởi vì đó là một giao dịch không chắc chắn tôi cần phải sử dụng $stmt->close(); sau mỗi lần thực thi(); hoặc chỉ sử dụng một $stmt->close(); sau khi tất cả chúng?

+5

Bạn đang đề cập đến phương pháp 'đóng' nào? Chỉ có 'PDOStatement :: closeCursor' có tên tương tự ... – Jon

+0

câu hỏi liên quan http://stackoverflow.com/questions/1046614/do-sql-connections-opened-with-pdo-in-php-have- to-be-closed – Ozzy

+0

@Jon tôi đã nhầm lẫn, tôi đã trả lời nhận xét bên dưới, nhờ phplover – PHPLOVER

Trả lời

3

Dường như bạn đang sử dụng phương pháp đóng mysqli. $ Stmt-> close() methode đơn giản chỉ đóng cửa đóng kết nối cơ sở dữ liệu đã mở trước đó (http://www.php.net/manual/en/mysqli.close.php).

EDIT: Nếu đó là PDO bạn đang sử dụng, tôi chỉ đơn giản là không hiểu, tại sao bạn không tận dụng khả năng có tên parametres thay vì dấu chấm hỏi. Đó là, tại sao nhiều người chọn PDO thay vì mysqli - bạn có thể có cái nhìn toàn diện hơn về các truy vấn/câu lệnh.

+0

i am new to pdo và thấy nó ở đâu đó $ stmt-> close() và nghĩ nó có nghĩa là đóng câu lệnh chuẩn bị và $ stmt = null sẽ đóng kết nối, vì vậy về cơ bản bạn chỉ sử dụng $ stmt-> close() nếu sử dụng phong cách thủ tục mysqli? (ví dụ: tôi sẽ không sử dụng $ stmt-> close() trên ví dụ tôi đã đưa ra trong bài viết ban đầu của tôi)? thay vào đó tôi sẽ sử dụng $ stmt = null; thế nào để đóng kết nối với db? cảm ơn phplover – PHPLOVER

+2

Không chính xác. $ stmt-> close() là kiểu mysqli OOP, mysql_close hoặc mysqli_close là kiểu thủ tục mysql (i). Và có, để đóng kết nối tới cơ sở dữ liệu trong PDO, bạn chỉ cần đặt câu lệnh thành NULL. – hskrijelj

+0

Cảm ơn bạn, bây giờ tôi hiểu :) cảm ơn phplover – PHPLOVER

9

Không có phương thức close() cho PDO, thay vào đó để đóng kết nối bạn chỉ cần đặt biến cơ sở dữ liệu thành null - sẽ đóng kết nối.

$stmt = null; 

Để trả lời câu hỏi thứ hai, bạn chỉ cần đóng kết nối một lần. Sau khi bạn đã thực thi tất cả các truy vấn bạn cần thực hiện trên cơ sở dữ liệu.

+0

Thannk bạn, bối rối bản thân mình, giải thích tốt, cảm ơn phplover – PHPLOVER

Các vấn đề liên quan