Pereiti prie turinio

kodėl neatrenka panašių užklausų


Rekomenduojami pranešimai

Sveiki, turiu bėdą dėl Mysql LIKE. Kodas:

 

$sql = mysql_query("SELECT * FROM video WHERE raktazodziai LIKE '{%$row[pavadinimas]%}' DESC LIMIT 4");
			$nuskaitymas = mysql_fetch_array($sql);

	while ($row = mysql_fetch_array($nuskaitymas)) { kontekstas }

 

ir man pargrąžina rezultatą, kad mysql_query argumentas yra blogas, ko pasekoje ir while funkcija nėra tinkama.

 

bandžiau ir LIKE '%{$row[pavadinimas]}%' ir LIKE '$row[pavadinimas] ir LIKE $row[pavadinimas] ir niekas neveikia, kuo tas LIKE argumentas blogas?

 

$row[pavadinimas] pargrąžina reikiamą rezultatą, šiuo atveju "Vėžlys balamutina mėsą" ir yra kitas įrašas su raktažodžiais mesa,mėsą,mesos,vezlys

Redagavo gio
Nuoroda į pranešimą
Dalintis kituose puslapiuose

$sql = mysql_query("SELECT * FROM `video` WHERE `raktazodziai` LIKE '%{$row['pavadinimas']}%' DESC LIMIT 4");

neveikia čia kažkokia nesamonė konkrečiai jau mąstau, kad taip net negali būti.

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ************/public_html/video.php on line 280

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ***************/public_html/video.php on line 282

 

lentelė "video" yra , laukelis "raktazodziai" irgi yra. tai kas čia blogai??

 

Neturėtų būt: $row[$pavadinimas] ?

ne, čia prieš tai ištraukta eilutė iš mysql su argumentu SELECT * todėl kintamasis $row su array viduje

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O argumentą escapini bent?

 

Ir dar. Tik nesakyk, kad suki didelį ciklą ir jame SELECT kiekvienoje iteracijoje.

nesuku,nėra taip,kad ciklas cikle tikrai. bet ir neascaipinau :unsure:

 

$sql = mysql_query("SELECT * FROM video WHERE raktazodziai LIKE '%$row[pavadinimas]%' ORDER BY id DESC LIMIT 4");

Galbūt? Ir šeip tau atostogų nuo forumo reikėtų, o tai google reikia išmokt naudotis pagaliau

jeigu būčiau radęs info gugle, neklausčiau čia. Nemanyk, kad išvis sėdžiu ir kai tik ko reikia einu čia rašyt. po google eina įtempta paieška pačiame forume, o paskui tik temos kūrimas

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai mano pasiūlymas nesuveikė? Tada siūlau taip daryti: tiesiog echo "SELECT * FROM video WHERE raktazodziai LIKE '%$row[pavadinimas]%' ORDER BY id DESC LIMIT 4" ir ką išspausdina bandai rankom daryt SQL užklausą phpmyadmin'e ar ką naudoji. Gauni klaidą, ieškai kur sintaksė bloga.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

nesuku,nėra taip,kad ciklas cikle tikrai. bet ir neascaipinau :unsure:

Šiaip jau apskritai nebereikėtų naudoti ext/mysql (mysql_*) funkcijų, bet jeigu turi labai daug kodo ir sunku būtų viską pakeisti, naudok savo argumentui mysql_real_escape_string()... Kitaip – SQL injekcija, tavo saitą greit nuneš net ir pradedantieji. :)

 

http://www.phptherightway.com/#databases

Nuoroda į pranešimą
Dalintis kituose puslapiuose

randa 3 eilutes pagal užklausą. Sugalvojau, kad padarysiu negrąžinamą rezultatą tiesiog jei argumentas neteisingas ir pažiūrėsiu kas bus

 

Šiaip jau apskritai nebereikėtų naudoti ext/mysql (mysql_*) funkcijų, bet jeigu turi labai daug kodo ir sunku būtų viską pakeisti, naudok savo argumentui mysql_real_escape_string()... Kitaip – SQL injekcija, tavo saitą greit nuneš net ir pradedantieji. :)

 

http://www.phptherightway.com/#databases

ačiū už nuorodą, bet atsigetindamas tarkim ką nors iš laukelio naudoju htmlspecialchars ir str_replace,preg_match, o čia šiaip vienintelis argumentas visame kode, kuriame naudoju kintamajį kaip "argumentą". Ir tą mysqli procedūrą bandysiu taikyti jau kitame darbe, kurį bandysiu pasidaryti

 

supratau kur klaida,bet kodėl tarkim man neišrenka rezltato, jei pas mane raktažodžiai atskirti kableliais ir tas $row[pavadinimas] susideda iš 3 žodžių, iš kurių vienas yra raktažodis lentelėje video net trijuose stulpelliuose? Jei rašau tik raktažodį, tuomet viskas ok,bet jei darašau papildomą žodį, pradeda nereaguoti ir neskaityti, kad užklausoje yra raktažodis, ieško visos frazės. Juk LIKE tai ir yra užklausa atrasti panašų rezultatą, o ne vienodą. Ar reikia būtinai argumentą nurodyt?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

kaip suprast , atskiriami kableliais?

Jei supratau gerai , tad naudok taip:

$sql = mysql_query("SELECT * FROM `video` WHERE `raktazodziai` LIKE '%".implode("%", explode(",",$row['pavadinimas']))."%' ORDER BY id DESC LIMIT 4");

Redagavo Avice
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ą...