ΪʲôҪʹÓà mysqli_close()?

Why use mysqli_close()?(ΪʲôҪʹÓà mysqli_close()?)
±¾ÎĽéÉÜÁËΪʲôҪʹÓà mysqli_close()?µÄ´¦Àí·½·¨£¬¶Ô´ó¼Ò½â¾öÎÊÌâ¾ßÓÐÒ»¶¨µÄ²Î¿¼¼ÛÖµ£¬ÐèÒªµÄÅóÓÑÃÇÏÂÃæËæ×Ÿú°æÍøµÄС±àÀ´Ò»Æðѧϰ°É£¡

ÎÊÌâÃèÊö

ÓÐʲôÀíÓÉÈÃÎÒÔÚ²éѯ֮ºó»ò½Å±¾½áÊøÊ±¹Ø±ÕÁ¬½ÓÂð?

Is there any reason why I should close the connection after a query or at the end of the script?

×ö/²»×öÓÐʲôºÃ´¦?

ÍÆ¼ö´ð°¸

Á¬½Ó(Èç¹û²»Êdz־õÄ) ×ÜÊÇÔڽű¾½áÊøÊ±¹Ø±Õ£¬ËùÒÔ£¬ÀíÂÛÉÏ£¬Äã²»»áÐèÒª×Ô¼º¹Ø±Õ.

The connection (if not persistent) is always closed at the end of the script, so, in theory, you don't need to close it yourself.

²»¹ý£¬Èç¹ûÄúµÄ PHP ½Å±¾ÐèÒª´óÁ¿Ê±¼äÀ´Ö´ÐУ¬ÄÇôµ±Äú²»ÔÙÐèÒª¶ÔÊý¾Ý¿âÖ´ÐÐÈκÎÇëÇóʱ¹Ø±ÕÁ¬½ÓÊǸöºÃÖ÷Ò⡪¡ªÖÁÉÙ£¬Èç¹û³¤Ê±¼äµÄ¼ÆËãÊÇÔÚÖ®ºóÍê³ÉµÄ²éѯ.

Still, if your PHP script takes lots of time to execute, it's a good idea to close the connection when you don't have to do any request to the database anymore -- at least, if the long calculations are done after the queries.

Èç¹ûÄúµÄÓ¦ÓóÌÐò²¿ÊðÔÚ¹²ÏíÖ÷»úÉÏ£¬ÔòÓÈÆäÈç´Ë:ÄúµÄÓû§ÕÊ»§Í¨³£Ö»ÄÜͬʱ´ò¿ª¼¸¸öÁ¬½Ó.(ÔÚ¹²ÏíÖ÷»úÉÏ£¬Í¬Ê±´ò¿ªµÄÁ¬½ÓÊýÁ¿¿ÉÄܺÜÉÙ£»ÔÚ˽ÈË·þÎñÆ÷ÉÏͨ³£¸ü´ó).

This is especially true if your application is deployed on a shared hosting : your user account can generally only have a few connections opened at the same time. (That number of simultaneous opened connections can be pretty small on shared hosting ; it's generally bigger on private servers).


ÎÒÃǾ­³£²»¹Ø±Õ×Ô¼ºµÄÁªÏµµÄÔ­ÒòÊÇ:


The reason we often don't close connections ourselfves is :

  • ÎÒÃÇͨ³£²»ÖªµÀºÎʱÍê³ÉÁËËùÓвéѯ¡ª¡ª¶ÔÓÚÓÉÐí¶àС¿é"×é³ÉµÄÒ³ÃæÓÈÆäÈç´Ë£»Ã¿Ò»¸ö¶¼ÊǶÀÁ¢ÓÚÆäËûµÄ£¬²¢ÇÒ¿ÉÒÔ×Ô¼º½øÐвéѯ£»ÄÇô£¬ÎÒÃÇʲôʱºò¿ÉÒԹرÕÁ¬½Ó?
  • ÍøÒ³µÄÉú³ÉËÙ¶Èͨ³£·Ç³£¿ì£¬Òò´ËÎÒÃDz»±Øµ£ÐĹرÕÓëÊý¾Ý¿âµÄÁ¬½Ó.

ÕâÆª¹ØÓÚΪʲôҪʹÓà mysqli_close()?µÄÎÄÕ¾ͽéÉܵ½ÕâÁË£¬Ï£ÍûÎÒÃÇÍÆ¼öµÄ´ð°¸¶Ô´ó¼ÒÓÐËù°ïÖú£¬Ò²Ï£Íû´ó¼Ò¶à¶àÖ§³Ö¸ú°æÍø£¡

±¾Õ¾²¿·ÖÄÚÈÝÀ´Ô´»¥ÁªÍø,Èç¹ûÓÐͼƬ»òÕßÄÚÈÝÇÖ·¸ÁËÄúµÄÈ¨Òæ£¬ÇëÁªÏµÎÒÃÇ£¬ÎÒÃÇ»áÔÚÈ·ÈϺóµÚһʱ¼ä½øÐÐɾ³ý£¡

Ïà¹ØÎĵµÍƼö

Warning: mysqli_query() expects at least 2 parameters, 1 given. What?(¾¯¸æ:mysqli_query() ÐèÒªÖÁÉÙ 2 ¸ö²ÎÊý£¬1 ¸ö¸ø¶¨.ʲô?)
INSERT query produces quot;Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean givenquot;(INSERT ²éѯ²úÉú¡°¾¯¸æ:mysqli_num_rows() ÆÚÍû²ÎÊý 1 Ϊ mysqli_result£¬¸ø³ö²¼¶ûÖµ£»)
prepared statements - are they necessary(×¼±¸ºÃµÄ³ÂÊö - ËüÃÇÊÇ·ñ±ØÒª)
Do I need to escape my variables if I use MySQLi prepared statements?(Èç¹ûÎÒʹÓà MySQLi ×¼±¸ºÃµÄÓï¾ä£¬ÊÇ·ñÐèҪתÒåÎҵıäÁ¿?)
Properly Escaping with MySQLI | query over prepared statements(ʹÓà MySQLI ÕýȷתÒå |²éѯ׼±¸ºÃµÄÓï¾ä)
Is it possible to use mysqli_fetch_object with a prepared statement(ÊÇ·ñ¿ÉÒÔ½« mysqli_fetch_object Óë×¼±¸ºÃµÄÓï¾äÒ»ÆðʹÓÃ)