Electrokit Buggfix Plus
Aktuellt datum och tid: 09.10 2020-02-17

Alla tidsangivelser är UTC + 1 timme




Svara på tråd  [ 13 inlägg ] 
Författare Meddelande
 Inläggsrubrik: mySQL SELECT fråga
InläggPostat: 11.37 2019-06-20 

Blev medlem: 11.20 2009-05-26
Inlägg: 6198
Ort: Kristinehamn
Hur sjutton skriver man om man vill söka en post som innehåller en lång text med ett sökord.
Säg att jag vill öppna posten som innehåller ordet svets i strängen "blabla svets blabla bla mer svets."


Försöker jag med
$searchStr="svets"

SELECT * FROM my_info_table WHERE info LIKE " . '"' . $searchStr .'"';

Så går det inte. Men söker jag på hela strängen:

$searchStr="blabla svets blabla bla mer svets."

SELECT * FROM my_info_table WHERE info LIKE " . '"' . $searchStr .'"';

Så funkar det.


Upp
 Profil  
 
 Inläggsrubrik: Re: mySQL SELECT fråga
InläggPostat: 11.49 2019-06-20 
Användarvisningsbild

Blev medlem: 18.06 2010-05-17
Inlägg: 9143
Ort: Växjö/Alvesta
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
SELECT * FROM my_info_table WHERE info LIKE " . '"%' . $searchStr .'%"';


Borde göra jobbet.

Edit: oj, hade skrivit $ istället för %


Senast redigerad av Klas-Kenny 12.26 2019-06-20, redigerad totalt 1 gång.

Upp
 Profil  
 
 Inläggsrubrik: Re: mySQL SELECT fråga
InläggPostat: 11.50 2019-06-20 
Co Admin
Användarvisningsbild

Blev medlem: 16.04 2006-04-16
Inlägg: 10598
För att söka på delar av strängar använder man FULLTEXT index. Dom tar lång tid att skapa och kräver mycket lagringsutrymme men sen går det blixtsnabbt att söka.

https://dev.mysql.com/doc/refman/8.0/en ... dexes.html


Upp
 Profil  
 
 Inläggsrubrik: Re: mySQL SELECT fråga
InläggPostat: 11.55 2019-06-20 

Blev medlem: 17.15 2008-02-11
Inlägg: 2580
Ort: Vasa, Finland
Kunde detta fungera?
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
$searchStr="%svets%"


Upp
 Profil  
 
 Inläggsrubrik: Re: mySQL SELECT fråga
InläggPostat: 12.03 2019-06-20 

Blev medlem: 11.20 2009-05-26
Inlägg: 6198
Ort: Kristinehamn
Besvarar mig själv. Missad %sökord% :doh:


Upp
 Profil  
 
 Inläggsrubrik: Re: mySQL SELECT fråga
InläggPostat: 13.24 2019-06-20 
Användarvisningsbild

Blev medlem: 10.07 2008-01-22
Inlägg: 1943
Ort: Stockholm
Prova sen med att söka på " '; DROP TABLE my_info_table;-- " :D


Upp
 Profil  
 
 Inläggsrubrik: Re: mySQL SELECT fråga
InläggPostat: 13.59 2019-06-20 
EF Sponsor
Användarvisningsbild

Blev medlem: 15.29 2005-05-10
Inlägg: 38191
Ort: Söderköping
Och innan du gör det, det där är ett bra exempel på "SQL injection".
Ett stort problem om man inte kan använda "SQL parameters" utan
måste hantera dynamiska SQL satser med stränghantering. Inte bra
i de fall att t.ex "svets" kommer från en hemsida där användaren
kan skriva vad som helst i ett formulär, t.ex ett DROP kommando...

Ditt exempel skulle kunna set ut ungefär så här:
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
$searchStr="%svets%"

/* create a prepared statement */

if ($stmt = $mysqli->prepare("SELECT * FROM my_info_table WHERE info LIKE ?")) {

    /* bind parameters for markers */
    $stmt->bind_param("s", $searchStr);

    /* execute query */
    $stmt->execute();
...
...
}

Ungefär, otestad o.s.v. Här går det *inte* att använda johanos lilla "trick"...
Se mer på t.ex. https://www.php.net/manual/en/mysqli.prepare.php
Eller googla "php sql prepare statement".


Upp
 Profil  
 
 Inläggsrubrik: Re: mySQL SELECT fråga
InläggPostat: 16.44 2019-06-20 

Blev medlem: 10.23 2015-07-18
Inlägg: 475
Ort: Linköping
Angående SQL injection så tänker jag alltid på https://xkcd.com/327/


Upp
 Profil  
 
 Inläggsrubrik: Re: mySQL SELECT fråga
InläggPostat: 17.58 2019-06-20 
Användarvisningsbild

Blev medlem: 10.07 2008-01-22
Inlägg: 1943
Ort: Stockholm
Ja den är bra :-)

"little Bobby tables" :-)


Upp
 Profil  
 
 Inläggsrubrik: Re: mySQL SELECT fråga
InläggPostat: 22.58 2019-06-20 

Blev medlem: 11.20 2009-05-26
Inlägg: 6198
Ort: Kristinehamn
Det jag håller på med nu är enbart en prototyp-app. Jag har inte så bra kunskaper om detta med "SQL injection" så det får bli ett senare problem när jag fått appen att fungera som jag tänkt. Avsikten är att köra den mot mySQL. Apache (XAMPP) lokalt i datorn. För tillfället kör jag den mot en internetserver bara för att kunna komma åt den när jag inte sitter hemma.


Upp
 Profil  
 
 Inläggsrubrik: Re: mySQL SELECT fråga
InläggPostat: 11.04 2019-06-22 
Användarvisningsbild

Blev medlem: 18.17 2004-02-11
Inlägg: 9448
Ort: Knivsta
Filtrera bort ; och andra specialtecken ur söksträngen så är du lite mer skyddad. Och kanske en maxgräns på 10 tecken?


Upp
 Profil  
 
 Inläggsrubrik: Re: mySQL SELECT fråga
InläggPostat: 22.04 2019-09-30 
EF Sponsor
Användarvisningsbild

Blev medlem: 17.50 2006-07-19
Inlägg: 1317
Ort: Borås
:rofl
johano skrev:
Prova sen med att söka på " '; DROP TABLE my_info_table;-- " :D


Upp
 Profil  
 
 Inläggsrubrik: Re: mySQL SELECT fråga
InläggPostat: 05.26 2019-10-01 
Användarvisningsbild

Blev medlem: 17.06 2017-04-15
Inlägg: 982
Ort: Malmö
Se tills så att användaren som accessar databasen bara har de behörigheter som krävs.
GRANT SELECT, INSERT, DELETE ON database.* TO 'user'@'localhost';

Ska det bara sökas i databasen:
GRANT SELECT ON database.* TO 'user'@'localhost';

Som tillägg till de andra säkerhetsåtgärderna.


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Svara på tråd  [ 13 inlägg ] 

Alla tidsangivelser är UTC + 1 timme


Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 1 gäst


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
   
Drivs av phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010