Kom ihåg mig?
Home Menu

Menu


php loop formulär variabler problem

 
 
Ämnesverktyg Visningsalternativ
Oläst 2009-10-05, 16:30 #1
Reager Reager är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 151
Reager Reager är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 151
Om inte SQL när man använder PHP skiljer sig från vanlig SQL så kan det vara värt att påpeka att det är felaktig SQL oxå.

$sql = "INSERT INTO tblIngrediens SET ingrediens='$xingrediens'";

Ser ut som en blandning mellan INSERT och UPDATE. Den korrekta bör väl vara

$sql = "INSERT INTO tblIngrediens VALUES('" . $xingrediens ."')";

Såg inte att någon påpekat detta tidigare och det kan ju vara bra att veta
Reager är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-05, 16:43 #2
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Citat:
Ursprungligen postat av Reager Visa inlägg
Om inte SQL när man använder PHP skiljer sig från vanlig SQL så kan det vara värt att påpeka att det är felaktig SQL oxå.

$sql = "INSERT INTO tblIngrediens SET ingrediens='$xingrediens'";

Ser ut som en blandning mellan INSERT och UPDATE. Den korrekta bör väl vara

$sql = "INSERT INTO tblIngrediens VALUES('" . $xingrediens ."')";

Såg inte att någon påpekat detta tidigare och det kan ju vara bra att veta
Det går alldeles utmärkt att köra "update"-varianten också om man kör MySQL (PHP har inget med saken att göra) vilken jag själv rekommenderar då koden blir mer logisk och lättläst.
__________________
Full-stack developer, free for smaller assignments

Senast redigerad av tartareandesire den 2009-10-05 klockan 16:50
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-05, 18:52 #3
Nerox Nerox är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2005
Inlägg: 37
Nerox Nerox är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2005
Inlägg: 37
Citat:
Ursprungligen postat av Reager Visa inlägg
Om inte SQL när man använder PHP skiljer sig från vanlig SQL så kan det vara värt att påpeka att det är felaktig SQL oxå.

$sql = "INSERT INTO tblIngrediens SET ingrediens='$xingrediens'";

Ser ut som en blandning mellan INSERT och UPDATE. Den korrekta bör väl vara

$sql = "INSERT INTO tblIngrediens VALUES('" . $xingrediens ."')";

Såg inte att någon påpekat detta tidigare och det kan ju vara bra att veta
Ska man vara petig ska du väll ha deklarerat vilke kolumner du sätte in värden i med

Kod:
$sql = "INSERT INTO tblIngrediens (ingridiens)VALUES('" . $xingrediens ."')";
Nerox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 08:47 #4
Fia Fia är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 87
Fia Fia är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 87
Jag har använt denna vid formulär inlägg till DB, går inte det lika bra?

function addslashes_deep($value)
{
$value = is_array($value) ?
array_map('addslashes_deep', $value) :
addslashes($value);
return $value;
}

också strippar jag det med en liknande function när jag hämtar det.
Fia är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 09:05 #5
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
Som tartareandesire påpekar går det lika bra att använda INSERT...SET-syntaxen så länge man håller sig till MySQL. Ska du byta databas blir det jobbigare eftersom det inte följer SQL-standard(er). Men ärligt talat - hur ofta byter man databas? (Själv skulle jag iofs undvika just den syntaxen.)

Funktionen addslashes() är inte lika bra. Den har problem med multibyte-characters t ex. Till och med dokumentationen, http://se2.php.net/addslashes, säger att man bör använda mysql_real_escape_string() eller motsvarande för andra databaser istället för addslashes().

Jag har hört att addslashes() ska droppas från PHP6 men jag har inte kollat upp det själv.
dotvoid är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 16:17 #6
Nerox Nerox är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2005
Inlägg: 37
Nerox Nerox är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2005
Inlägg: 37
Citat:
Ursprungligen postat av dotvoid Visa inlägg
Som tartareandesire påpekar går det lika bra att använda INSERT...SET-syntaxen så länge man håller sig till MySQL. Ska du byta databas blir det jobbigare eftersom det inte följer SQL-standard(er). Men ärligt talat - hur ofta byter man databas? (Själv skulle jag iofs undvika just den syntaxen.

Alla bör köra med den syntaxen dom tycker underlättar just deras kodande. Dock gör jag projekt nån annan skall koda på senare försöker jag hålla strikt standard just av den anledningen att det är standard och underlättar för nästa person då denna med all sannolikhet känner till standarden.
Nerox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 22:32 #7
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
Citat:
Ursprungligen postat av Nerox Visa inlägg
Alla bör köra med den syntaxen dom tycker underlättar just deras kodande.
Det håller jag inte med om. När man börjar lära sig bör man lära sig standarder och vedertagen praxis. Först när man kan reglerna så bra att man vet när och varför det är lämpligt att använda icke-standarder eller bryta mot praxis kan man överväga det.

Det blir lättare att läsa andras kod för att lära sig. Det är lättare att få hjälp. Det är lättare att hjälpa. Det är lättare att byta teknikplattform.

Och sist men inte minst, man slipper de alltför vanliga problemen med att tillverkar-specifik syntax och teknik blir obsolet. Därmed blir det å så mycket lättare att uppgradera sina projekt till nyare PHP- och MySQL-versioner (t ex) i framtiden.
dotvoid är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 09:14 #8
Fia Fia är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 87
Fia Fia är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 87
Synd det var så smidigt att bara lägga functionen på $POST nu måste man ju gå in på varje sträng som ska in och lägga till mysql_real_escape_string(). Då har jag syselsättnig idag i alla fall.......
Eller skulle man kunna byta ut addslashes() mot mysql_escape_string() i functionen, Bara spånar lite, det får jag prova. Tack för all lärorik information.

Senast redigerad av Fia den 2009-10-06 klockan 09:18
Fia är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 09:31 #9
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
Ja du skulle kunna byta ut addslashes() mot mysql_real_escape_string(). (Tänk bara på att databaskopplingen redan måste vara etablerad för att mysql_real_escape_string() ska fungera.)
dotvoid är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-06, 09:49 #10
Fia Fia är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 87
Fia Fia är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 87
Så här blev det.
function addslashes_deep($value)
{
$value = is_array($value) ?
array_map('addslashes_deep', $value) :
mysql_real_escape_string(trim($value));
return $value;
}

Så kör jag den här
$_POST = addslashes_deep($_POST);

Och vill man bli av med html oxå så

mysql_real_escape_string(strip_tags(trim($value))) ;

Senast redigerad av Fia den 2009-10-06 klockan 13:52
Fia är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 10:57.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017