FAQ |
Kalender |
|
![]() |
#1 | ||
|
|||
Medlem
|
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 ![]() |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Supermoderator
|
Citat:
__________________
Full-stack developer, free for smaller assignments Senast redigerad av tartareandesire den 2009-10-05 klockan 16:50 |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Nykomling
|
Citat:
Kod:
$sql = "INSERT INTO tblIngrediens (ingridiens)VALUES('" . $xingrediens ."')"; |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
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. |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
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. |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Nykomling
|
Citat:
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. |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
Citat:
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. |
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Medlem
|
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 |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Medlem
|
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.)
|
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Medlem
|
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 |
||
![]() |
![]() |
Svara |
|
|