Затваряне на mysql

eddyy93

Registered
Абе интерисува ме има ли проблем примерно:

PHP:
con_mysql();
$row=mysql_query("SELECT smth FROM table");

while($row_r=mysql_fetch_assoc($row)) {
 // echo 
}

АКО ГО ЗАТВОРЯ ЕТО ТАКА:

PHP:
con_mysql();
$row=mysql_query("SELECT smth FROM table");
mysql_close();
while($row_r=mysql_fetch_assoc($row)) {
 // echo 
}

ИЛИ ТРЯБВА ДА ГО ЗАТВОРЯ ТАКА:


PHP:
con_mysql();
$row=mysql_query("SELECT smth FROM table");

while($row_r=mysql_fetch_assoc($row)) {
 // echo 
}
mysql_close();


ИНТЕРИСУВА МЕ ЗАЩОТО РАБОТИ И ПО ДВАТА НАЧИНА. НО В ЕДНА ДРУГА ТЕМА ПРОЧЕТОХ, ЧЕ ПО ТОЗИ ПЪРВИЯТ НАЧИН НЕ БИЛО ПРАВИЛНО И СЕ ПРИТИСНИХ.
 
PHP:
con_mysql();
$row=mysql_query("SELECT smth FROM table");

while($row_r=mysql_fetch_assoc($row)) {
 // echo 
}
mysql_close();
Е правилният начин.
Работа с файлове и бази данни имат следният алгоритъм
: отваряш/свързваш се , избираш кое да чете ( file.exl , DataBaseName ) , правиш каквото правиш и след това затварят.


Представи си го така :
Отваряш хладилника, отваряш шкафчето, вземаш както ти трябва, и след това го затварят.

Малко странно изглежда със пример от реалният живот :
да отвориш хладилника, да отвориш шкафчето, да затвориш хладилника и чак тогава да вземеш това което ти трябва, нали?
 
Не е задължително да се слага mysql_close() понеже затваря непостоянни връзки. Така или иначе след края изпълнението на скрипта, връзката ще се прекъсне сама.
mysql_close() аз лично бих го ползвал, ако имам няколко връзки и чрез функцията искам да затворя определена връзка.
 
Ами ако ето така:

PHP:
con_mysql();

$row=mysql_query("SELECT smth FROM table WHERE id='$id'");


$row_r=mysql_fetch_assoc($row);

mysql_close();

 echo $row_r['title'] ;

Искам преди да изведа каквато и да е информация от базата данни, връзката да се затвори.
 
Искам да го направя така защото си мисля, че тъй като съм свързан към базата данни и да приемем, че никъде нямам mysql_close() някой може да си вкара собстевена заявка към кода и да атакува базата данни.
 
mysql_close() няма нищо общо със SQL Injection. Просто прекъсва връзката, за да не се използват излишни ресурси. Но както казах, накрая на всичко връзката се прекъсва към последно пуснатата връзка.
Ако имаш само едно свързване към база данни, не виждам смисъл да затваряш ръчно връзката.
 

Back
Горе