Pereiti prie turinio

Trumpi klausimai apie perėjimą ant PDO


Rekomenduojami pranešimai

Manau, kad būtų reikalinga tema, kur eitų užduoti trumpus klausimus.

 

Mano situacija tokia.

 

Yra išplėstinė paieška su 40 laukų.

 

Ankščiau buvo taip:

 

if (isset($_POST['vardas') && $_POST['vardas'] != '') {
  $vardas = $_POST['vardas'];
  $sql .= "vardas = '$vardas'";
}

 

Poto vykdau SQL užklausą.

 

O su PDO išeina, kad turiu daryti du kartus tuos pačius if'us ? T.y Pirmą kartą tas IF'as naudojamas SQL užklausai padaryti, poto prepare(SQL), ir poto antrą kartą vėl eina tas pats IF'as, kad padaryti bind(kintamieji) ?

 

 

Kažkaip nekorektiškai gaunas ?

Redagavo BigBug
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Manau, kad būtų reikalinga tema, kur eitų užduoti trumpus klausimus.

 

Mano situacija tokia.

 

Yra išplėstinė paieška su 40 laukų.

 

Ankščiau buvo taip:

 

if (isset($_POST['vardas') && $_POST['vardas'] != '') {
  $vardas = $_POST['vardas'];
  $sql .= "vardas = '$vardas'";
}

 

Poto vykdau SQL užklausą.

 

O su PDO išeina, kad turiu daryti du kartus tuos pačius if'us ? T.y Pirmą kartą tas IF'as naudojamas SQL užklausai padaryti, poto prepare(SQL), ir poto antrą kartą vėl eina tas pats IF'as, kad padaryti bind(kintamieji) ?

 

 

Kažkaip nekorektiškai gaunas ?

http://wiki.hashphp....ySQL_Developers

Redagavo mantys89
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na ir ? Esu skaitęs tenais, tarp kito, pavyzdžiai ten patiekti ne patys optimaliausi.

 

O į mano klausimą ten neatsako :)

 

Su pvz. viskas ten gerai, o duomenų tikrinti 10 kartų tikrai nereikia :D Vieną kartą patikrini duomenis ir vykdai užklausas su PDO.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

mantys89 nuorodoj aiškiai parašyta.

$stmt = $db->prepare("SELECT * FROM table WHERE id=? AND name=?"); 
$stmt->execute(array($id, $name));

 

tai kokia problema pasidaryt taip...

 

if (isset($_POST['vardas') && $_POST['vardas'] != '') {
$columnNames[] = 'vardas';
$columnValues[] = $_POST['vardas'];
}

 

... ir po 40-ies IF'ų ...

 

$prepare = implode('=? AND ', $columnNames) . '=?';

$stmt = $db->prepare("SELECT * FROM table WHERE " . $prepare); 
$stmt->execute($columnValues);

 

Manęs neapleidžia nuojauta, kad su šiokiom tokiom modifikacijom galėtum didžiąją dalį if'ų į ciklą sudėt...

Redagavo Aurimas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Su pvz. viskas ten gerai, o duomenų tikrinti 10 kartų tikrai nereikia :D Vieną kartą patikrini duomenis ir vykdai užklausas su PDO.

 

Gal nevisai į temą, bet šnekant apie tą PDO pavyzdžių puslapį, kur siūloma daryti taip:

 

<?php
$stmt = $db->query('SELECT * FROM table');
$row_count = $stmt->rowCount();
echo $row_count.' rows selected';
?>

 

MAn atrodo, jog užklausa "SELECT count(*) AS sk FROM.." turėtų dirbti našiau :)

 

 

mantys89 nuorodoj aiškiai parašyta.

$stmt = $db->prepare("SELECT * FROM table WHERE id=? AND name=?"); 
$stmt->execute(array($id, $name));

 

tai kokia problema pasidaryt taip...

 

if (isset($_POST['vardas') && $_POST['vardas'] != '') {
$columnNames[] = 'vardas';
$columnValues[] = $_POST['vardas'];
}

 

... ir po 40-ies IF'ų ...

 

$prepare = implode('=? AND ', $columnNames) . '=?';

$stmt = $db->prepare("SELECT * FROM table WHERE " . $prepare); 
$stmt->execute($columnValues);

 

Manęs neapleidžia nuojauta, kad su šiokiom tokiom modifikacijom galėtum didžiąją dalį if'ų į ciklą sudėt...

 

Dėkui Aurimas, mintį supratau, būtent to man ir reikėjo ;)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

mantys89 nuorodoj aiškiai parašyta.

Neverta tiek žaisti, geriau į masyvą sudėti visus formos raktus ir cikle tikrinti, nenaudojant papildomų kintamųjų ir masyvų :) Dar siūlau pažiurėti extract() ir compact() funkcijas

 

Beja kas čia, kolkas nelabai suprantu...? :D Tik nesakykit, kad labai sunku perrinkti masyvo reikšmes ir raktus? :lol:

if (isset($_POST['vardas') && $_POST['vardas'] != '') {
$columnNames[] = 'vardas';
$columnValues[] = $_POST['vardas'];
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Neturiu noro sakyt, ar sunku perrinkinėt masyvo reikšmes ir raktus, pateikiau žmogui pavyzdį, kurį jis modifikuos pagal save. Ar jis užklausos konstravime naudos du masyvus, ar vieną asociatyvų, ar tris (kur trečiame nurodys, kokį veiksmą (=<>LIKE) naudot) - jo reikalas. Nebūtina išsidirbinėt, ypač rekomenduojant extract() naudot.

Neverta tiek žaisti, geriau į masyvą sudėti visus formos raktus ir cikle tikrinti, nenaudojant papildomų kintamųjų ir masyvų :) Dar siūlau pažiurėti extract() ir compact() funkcijas

 

Beja kas čia, kolkas nelabai suprantu...? :D Tik nesakykit, kad labai sunku perrinkti masyvo reikšmes ir raktus? :lol:

if (isset($_POST['vardas') && $_POST['vardas'] != '') {
$columnNames[] = 'vardas';
$columnValues[] = $_POST['vardas'];
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Neturiu noro sakyt, ar sunku perrinkinėt masyvo reikšmes ir raktus, pateikiau žmogui pavyzdį, kurį jis modifikuos pagal save. Ar jis užklausos konstravime naudos du masyvus, ar vieną asociatyvų, ar tris (kur trečiame nurodys, kokį veiksmą (=<>LIKE) naudot) - jo reikalas. Nebūtina išsidirbinėt, ypač rekomenduojant extract() naudot.

 

 

Sorry jai taip gavos... :) Visada reikia žiurėti kaip geriau galima padaryti konkrečiu atveju. O extract() ir compact() funkcijos paminėjau tik dėl to, kad jos praverčia kai reikia dirbti su duomenų bazėmis ir formomis.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gal nevisai į temą, bet šnekant apie tą PDO pavyzdžių puslapį, kur siūloma daryti taip:

 

<?php
$stmt = $db->query('SELECT * FROM table');
$row_count = $stmt->rowCount();
echo $row_count.' rows selected';
?>

 

MAn atrodo, jog užklausa "SELECT count(*) AS sk FROM.." turėtų dirbti našiau :)

Žinoma, daug našiau. Bet pamoka nėra apie COUNT, ji tiesiog parodo dar vieną PDO rezultatų objekto metodą, t.y. kai tau reikia IR duomenų, IR pažiūrėti, kiek jų grąžinta :)

 

Instead of using mysql_num_rows to get the number of returned rows you can get a PDOStatement and do rowCount();

O ne "Instead of using COUNT()".

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...