Начини в извеждане от БД

Kameliaa

Registered
Здравейте,

Искам да попитам когато се извежда от БД
каква е разликата между тези два начина и кога кой се използва?

1 - $row->text
2 - $row['text']

Благодаря
 
Първия начин 1 - $row->text е обектно ориентирано програмиране. Не знам от къде си го видяла това но, вероятно отговора от базата е присвоен на на някакво свойство text.

Вторият вариант е нормалният процедурен начин, което не значи че той не може да се използва в обектния модел. С две думи това $row['text'] можеш да го ползваш навсякъде, а другото само ако работиш с обекти.

Малко ми е дървено обяснението :) , но за да ме разбереш трябва да се запознаеш с ООП.
 
Не ти е дървено обяснението :?: Благодаря ти.


Кой е от двата начина се счита за по-добър?
 
Според мен, няма значение, само да ти върши работа. Ако не мислиш да се занимаваш с OOП, или пък не можеш да схванеш логиката, или каквато и да е друга причината, може за сега да се придържаш към процедурния вариянт ($r['text']). Можеш и да ги смесваш, но това не е много добра практика :D :?:
 
joTunkiq каза:
Според мен, няма значение, само да ти върши работа. Ако не мислиш да се занимаваш с OOП, или пък не можеш да схванеш логиката, или каквато и да е друга причината, може за сега да се придържаш към процедурния вариянт ($r['text']). Можеш и да ги смесваш, но това не е много добра практика :D :?:

:?: Благодаря ти
 
Ако ползваш mysqli, имаш няколко начина за fetch-ване на резултат от БД:
1. $red['kolona'];
PHP:
$result = mysqli_query($mysqli_obj, 'select id from table');
while($row = mysqli_fetch_assoc($result)) {
    echo $row['id'];
}
2. $red->kolona;
PHP:
$result = mysqli_query($mysqli_obj, 'select id from table');
while($row = mysqli_fetch_object($result)) {
    echo $row->id;
}
И в двата случая $mysqli_obj идва от mysqli_connect(host...user...pass);

А ето един малко по-различен вариант:
PHP:
$query = mysqli_prepare($mysql_obj, 'select id from table');
mysqli_stmt_bind_result($query, $id);
while(mysqli_stmt_fetch($query)) {
    echo $id;
}
при който казваш в кои променливи искаш да ти се "напъхат" колоните. Удобно е, защото после директно ползваш скаларни променливи (имаш $id вместо $row['id']). Може този начин да ти се вижда по-дълъг (имената на функциите започват с mysqli_stmt_), но ако ползваш с обектния начин е по-кратко:

PHP:
$query = $mysqli->prepare('select id from table');
$query->bind_result($id);
while($query->fetch())
    echo $id;
(и четливо):?:
 
Благодаря anonimen :?:

А различните начини отразяват ли се на натовареността на сървъра? За това и попитах, кой е по добър? Предполагам този с повечето код ще товари повече, или?
 
Kameliaa каза:
Предполагам този с повечето код ще товари повече, или?
Това не трябва да определя по какъв начин ще пишеш код. Открий своя начин, пиши подредено и разбираемо, а това, което питаш, се нарича микрооптимизация (неща от сорта дали да ползваш единични или двойни кавички).
Например ако се разтърсиш, ше откриеш, че някои неща вървят (много малко) по-бързо, написани по грозен начин. Това, което ми хрумва в момента:

Код:
if(isset($text[5]))
и
if(strlen($text) > 5)
 
Обектният модел е по-добър по не една причина. Така да се каже той е висшата форма на програмиране. Чрез него можеш да ползваш функционалноста на езика в пълна степен, докато с процедурния начин няма как да се постигне. Но това е дълга тема и няма как с две думи да се обясни. Принципно първо трябва да научиш основните неща в езика, като променливи, масиви, оператори и т.н. и след това да преминеш на по горното ниво.
 
Разбирам. Благодаря ви много ! :?:

а какви са критериите и има ли налични примери, чрез уроци или други за както казахте подреден и разбираемо написан код и съответно за такъв написан "по грозен начин"?
 
Не че нещо, но от кога обръщението към елемент от масив е "нормален начин за процедурно програмиране"?
 
lamerko каза:
Не че нещо, но от кога обръщението към елемент от масив е "нормален начин за процедурно програмиране"?
Абе на място ти е въпроса, но в контекста на нещата и по подразбирането, че автора не е много запознат се обяснява по този начин. Схванах какво имаш предвид, но може да си затворим очите само за да може автора да схване и да не го намешваме още повече. :D
 

Back
Горе