compac Seniormester
04. februar 2021 - 15:39 Der er 5 kommentarer og
2 løsninger

Sortering i et prepare-udtryk

Jeg skal foretage en sortering i alfabetisk orden efter første . begyndelsesbogstav, og andet kriterie:  dato.
Jeg har prøvet en masse men denne kommer nok nærmest:
$stmt = $link->prepare("SELECT * FROM vandreture where titel >= '$sort' ORDER BY $titel, $dato ASC limit 50");
    $stmt ->bind_param("si",$titel,$dato);
    $stmt->execute();
    $tur = $stmt->get_result();
-den tager posten med hvis blot begyndelsesbogstavet er med i ordet uanset det står.
arne_v Ekspert
04. februar 2021 - 16:10 #1
$stmt = $link->prepare("SELECT * FROM vandreture where titel >= '$sort' ORDER BY $titel, $dato ASC limit 50");

$stmt ->bind_param("si",$titel,$dato);

Er der parameters eller ikke??
compac Seniormester
04. februar 2021 - 22:23 #2
Jeg vil vise dig sætningen  med "gammeldags" opskrift:

  $tur = mysqli_query($link,"SELECT * FROM vandreture where titel >= '$sort' ORDER BY titel, dato ASC limit 50");

Vil du vise mig hvordan jeg får den omskrevet?
arne_v Ekspert
05. februar 2021 - 01:37 #3
Jeg forstaar stadig ikke spoergsmaalet.

Men hvis dit spoergsmaal er hvordan du saetter sorterings felt som parameter, saa er svaret at det kan du ikke.

Parameters er kun til vaerdier ikke til andet - ikke til felt navne eller tabel navne.

Saa an angivelse af sorterings raekkefoelge skal enten ske med gammeldags SQL streng konkatanering eller noget snasket work around.
compac Seniormester
05. februar 2021 - 17:29 #4
Jeg har studeret en af dine vejledninger og fundet frem til denne:
https://www.vajhoej.dk/arne/articles/prepparam.html#prob
Det gav denne løsning:
$sel = $link->prepare('SELECT * FROM vandreture WHERE titel >= ? ORDER BY titel ASC LIMIT 50');
$sel->bind_param('s', $cut);
$cut =  $sort;
$sel->execute();
$tur = $sel->get_result();
-tak for hjælpen
arne_v Ekspert
05. februar 2021 - 17:42 #5
I det tilfaelde er parameter en vaerdi =. alt OK.

Det er:

ORDER BY ?

som ikke ville virke.
compac Seniormester
05. februar 2021 - 20:28 #6
Ja, ORDER BY ? virker ikke. Men den havde jeg heller ikke forsøgt. Hvis jeg forsøger, hvordan skal det så bygges op?
arne_v Ekspert
05. februar 2021 - 20:41 #7
Som jeg siger.

Bedst - the oldfashioned way:

check_for_bad_input($feltnavn);
$sql = "SELECT ... ORDER BY $feltnavn"

hack:

lave en ORDER BY paa en CASE paa en vaerdi.
Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
Sådan kommer den nye coronapas-app til at se ud
Nu er der ikke længe til, at danskerne får mulighed for at downloade et coronapas, der er mindre afslørende i forhold til brugernes personlie sundhedsoplysninger. Se hvordan det nye pas kommer til at se ud.
Computerworld
Endnu en tragisk ulykke med førerløs Tesla: Musk har store forventninger til ny software
En tragisk dødsulykke i USA i weekenden har sat forøget fokus på Teslas eksisterende semiautomatiske system og det kommende fuldautomatiske, der skal gøre bilerne helt selvkørende.
CIO
Har du rost din mellemleder i dag? Snart er de uddøde - og det er et tab
Computerworld mener: Mellemledere lever livet farligt: Topledelsen får konstant ideer med skiftende hold i virkeligheden, og moden går mod flade agile organisationer. Men mellemlederen er en overset hverdagens helt med et kæmpe ansvar. Her er min hyldest til den ofte latterliggjorte mellemleder.
Job & Karriere
"Vi var nødt til at sige til dem, at I er nødt til at sende ham hjem nu, for han begynder at knække"
"Vi var nødt til at sige til dem, at I er nødt til at sende ham hjem nu, for han begynder at knække"
White paper
Infrastruktur: Byg et velfungerende Data Estate i otte trin
Mange virksomheder trækker på så mange og righoldige datakilder, at det bliver stadig sværere at holde rede på alle de informationer, man har. Samtidig lever et traditionelt data warehouse sjældent op til hverken de aktuelle eller – i særdeleshed – fremtidige krav fra forretningen. Løsningen er at udvide til en egentlig Data Estate; et stykke kritisk infrastruktur som gør det muligt at opbevare, organisere, konsolidere og analysere organisationens samlede datamængde. Denne hvidbog giver et samlet billede af, hvordan man gennem otte trin bevæger sig mod at implementere og drage nytte af en Data Estate. Samt hvordan du prioriterer indsatsen, så den giver størst værdi for forretningen.