Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/webvol34/an/96qmbdpibm1sspm/danielliljeberg.se/public_html/blog/wp-content/mu-plugins/gkphp.php on line 1
Sql « Categories « Daniel Liljeberg

Arkiv för ‘SQL’ kategori

Warning: Use of undefined constant archives - assumed 'archives' (this will throw an Error in a future version of PHP) in /www/webvol34/an/96qmbdpibm1sspm/danielliljeberg.se/public_html/blog/wp-content/themes/cordobo-green-park-2/archive.php on line 32

Warning: Use of undefined constant page - assumed 'page' (this will throw an Error in a future version of PHP) in /www/webvol34/an/96qmbdpibm1sspm/danielliljeberg.se/public_html/blog/wp-content/themes/cordobo-green-park-2/archive.php on line 32

Warning: A non-numeric value encountered in /www/webvol34/an/96qmbdpibm1sspm/danielliljeberg.se/public_html/blog/wp-content/themes/cordobo-green-park-2/archive.php on line 32

Warning: A non-numeric value encountered in /www/webvol34/an/96qmbdpibm1sspm/danielliljeberg.se/public_html/blog/wp-content/themes/cordobo-green-park-2/archive.php on line 32
class="post-198 post type-post status-publish format-standard hentry category-eclipse category-javascript category-php category-sql category-subversion category-video category-zend-framework">

Förslag till en samling tutorials

30 maj, 2011

Jag har funderat lite på vad man skulle kunna göra en tutorial/kurs om. Det finns ju otroligt mycket bra information på nätet redan och även om detta mest hade varit en kul liten grej så hade det varit roligt om någon lärde sig något på samma gång. Jag tror att jag kommer rikta in mig på en webapplikation av enklare slag skriven i PHP. Med enklare menar jag då, inte som omfattande. Vi skall fortfarande använda oss av abstrakta databaslager, AJAX och annat trevligt. Mycket då det saknas en del bra information för den svenska publiken om PHP men också för att det händer mycket med språket. Det möjliggör också för många att testa på det då alla delar vi kommer använda oss av kommer vara gratis (eller ha en free trial) utan att bli beroende av tredjepartslösningar som exempelvis Mono om man nu sitter i exempelvis Linux. Jag är dock inte partisk utan kan mycket väl se att vi i ett senare skede gör om exakt samam applikation i .Net för att se likheter och skillnader.

Jag tänkte försöka utgå ifrån att inte förvänta mig en massa kunskap av de som tar del av materialet. Men naturligtvis så kommer det att hjälpa om man utvecklat tidigare då jag endast kort kommer gå igenom grunder och sedan gå in på lite mera avancerade områden. Jag tänker mig följande upplägg

  1. Sätta upp lokala utvecklingsverktyg och saker att tänka på (OS, IDE, användbara plugins etc)
  2. Sätta upp server (utvecklingsstack, databas, versions hantering etc)
  3. Lite kort om PHP, karakteristiska saker med språket. Styrkor och svagheter etc.
  4. Ett antal enklare mindre program som visar lite på olika sätt att koda under PHP (och många andra språk också)
  5. Enklare introduktion till OOP och hur PHP hanterar detta.
  6. Introduktion till Zend Framework
  7. Introduktion av MVC mönstret

Sedan börjar vi knacka på vår lilla applikation och börjar då titta på hur Zend Framework hanterar views etc. Sedan går vi in på användarhantering, åtkomstkontroll, osv.

Detta är bara en idé om punkter att ta upp och jag tror att det hela, dynamisk, växer fram med tiden. Finns det några idéer eller önskemål så kom gärna med förslag.

Flattr this!

Warning: Use of undefined constant archives - assumed 'archives' (this will throw an Error in a future version of PHP) in /www/webvol34/an/96qmbdpibm1sspm/danielliljeberg.se/public_html/blog/wp-content/themes/cordobo-green-park-2/archive.php on line 32

Warning: Use of undefined constant page - assumed 'page' (this will throw an Error in a future version of PHP) in /www/webvol34/an/96qmbdpibm1sspm/danielliljeberg.se/public_html/blog/wp-content/themes/cordobo-green-park-2/archive.php on line 32

Warning: A non-numeric value encountered in /www/webvol34/an/96qmbdpibm1sspm/danielliljeberg.se/public_html/blog/wp-content/themes/cordobo-green-park-2/archive.php on line 32

Warning: A non-numeric value encountered in /www/webvol34/an/96qmbdpibm1sspm/danielliljeberg.se/public_html/blog/wp-content/themes/cordobo-green-park-2/archive.php on line 32
class="post-171 post type-post status-publish format-standard hentry category-sql">

SQL IN() utan dynamisk SQL

16 maj, 2011

Fick en fråga för ett tag sedan hur man kunde lösa ett problem som involverade en sql stored procedure innehållande en ‘IN’ vilkens data man skulle skicka in till proceduren. Detta var löst så som många löser det, med dynamisk SQL. Detta kan liknas vid att du bygger upp din SQL fråga av strängar i din SP och sedan exekverar queryn. Exempelvis

‘ids’ är här en komma sepparerad lista av id’n som vi vill göra vårt uppslag emot. Den dynamiska SQL queryn är inte en del av vår SP utan körs i sitt eget scope. Nackdelen med denna approach är dock att det inte är så lätt för query optimizern att kunna luska ut hur din query bäst skall köras. Utöver detta så måste användare av vår SP nu också ha SELECT rättigheter på alla tabeller som vi i vår dynamiska query hämtar data ifrån. Detta behöver man inte för en SP då rättigheterna sätta på SP’n och det sedan inte spelar någon roll vilka tabeller vår SP hämtar data ifrån. Att dynamiskt generera sin query kan också lämna dörren öppen för SQL injections. Om du hamnar i en situation då du måste använda dynamisk SQL, försök att alltid exekvera dem med ‘sp_executesql’.

Ett sätt att behålla möjligheten att dynamiskt skicka data till din ‘IN’ men slippa dynamisk SQL är att skapa en funktion som splittar upp din komma separerade lista och spara ner värdena i en temporär tabell som du sedan gör ett uppslag emot.

En funktion för att splitta en sträng kan göras på många sätt. Nedan följer en variant som gör det möjligt att välja vilken character man vill splitta på.

Nu kan du använda dig av denna funktion och splitta din sträng innehållande dina id’n.

Dynamisk SQL är dock inte alltid av ondo och kan ibland vara precis rätt väg att gå. Så testa båda lösningarna och se vad som passar bäst för just ditt ändamål. Men håll koll på säkerhets detaljerna.

Flattr this!