Avatar billede trophymanager Nybegynder
30. januar 2005 - 22:37 Der er 22 kommentarer og
1 løsning

php syntaks i query string.

$query = "INSERT INTO players SET agression='".rand(1,20)."'";


Denne synes ikke at få nogen reaktion? Hvordan skal det skrives?
På forhånd tak.
Avatar billede alister_crowley Nybegynder
30. januar 2005 - 22:40 #1
øhh lol

www.php.net/mysql_query , du mangler at køre den med mysql_query()
Avatar billede michael_stim Ekspert
30. januar 2005 - 22:41 #2
SET bliver brugt til UPDATE
INSERT INTO players (agression) VALUES(rand(1,20))
Avatar billede trophymanager Nybegynder
30. januar 2005 - 22:43 #3
re alist: alt det har jeg :) jeg sparede jer bare for alt det andet. re michael jeg må hellere give dig hele linien så.


mysql_connect("x","x");
mysql_select_db("x");
$b=0;
for ($a=0;$a<19;$a++) {

$query = "INSERT INTO players SET fornavn='$fornavntekst[$a]', efternavn='$efternavntekst[$a]', alder='$alder[$a]', stamina='$arr[$b]', strength='{$arr[$b+1]}', pace='{$arr[$b+2]}', technique='{$arr[$b+3]}', crossing='{$arr[$b+4]}', marking='{$arr[$b+5]}', tackling='{$arr[$b+6]}', passing='{$arr[$b+7]}', heading='{$arr[$b+8]}', finishing='{$arr[$b+9]}', longshots='{$arr[$b+10]}', setpieces='{$arr[$b+11]}', workrate='{$arr[$b+12]}', positioning='{$arr[$b+13]}', agression='".rand(1,20)."', injuryproneness='".rand(1,20)."', profressionalism='".rand(1,20)."', potential='".rand(1,20)."', talent='".rand(1,20)."'";
    $result = mysql_query($query);
$b=$b+14;
}

mysql_close();
Avatar billede gustav-olsen Nybegynder
30. januar 2005 - 22:45 #4
SQL syntaxen er ganske enkelt forkert.

Den rigtige syntax for det du prøver at skrive er:

$query = "INSERT INTO players (agression) VALUES ('" . rand(1,20) . "')";

Husk at putte den i en mysql_query() - ellers kommer der intet resultat.
Avatar billede trophymanager Nybegynder
30. januar 2005 - 22:46 #5
hvordan skriver jeg den rigtige syntaks uden at skulle ændre alt for meget af det jeg allerede har?

Jeg kan ikke rigtig se hvordan jeg ellers skal gøre det med de loops og arrays jeg har i forvejen.
Avatar billede gustav-olsen Nybegynder
30. januar 2005 - 22:46 #6
Hov, der var svaret. Men så må jeg hellere uddybe lidt.

$query = "INSERT INTO players (fornavn, efternavn, agression) VALUES ('" . $fornavntekst[$a] . "', "'$efternavntekst[$a]'", '" . rand(1,20) . "')";
Avatar billede trophymanager Nybegynder
30. januar 2005 - 22:48 #7
uddyb er godt :)

<- begynder.
Avatar billede michael_stim Ekspert
30. januar 2005 - 22:49 #8
INSERT INTO players (alle dine kolonnenavne sepereret med komme) VALUES(värdier til specifikke kolonnenavn sepereret med komma)
Så kan jeg se at du har arrays over det hele, hvorfor det?
Avatar billede michael_stim Ekspert
30. januar 2005 - 22:53 #9
Du behöver ikke at seperere SQL-stringen:
VALUES ('" . $fornavntekst[$a] . "', "'$efternavntekst[$a]'", '" . rand(1,20) . "')";
VALUES ('$fornavntekst[$a]', '$efternavntekst[$a]', rand(1,20))";
Avatar billede michael_stim Ekspert
30. januar 2005 - 22:56 #10
Du blander jo ikke html og php.
Avatar billede trophymanager Nybegynder
30. januar 2005 - 23:01 #11
der er stadig ikke bid:

$query = "INSERT INTO players (fornavn, efternavn, alder, stamina, strength, pace, technique, crossing, marking, tackling, passing, heading, finishing, longshots, setpieces, workrate, positioning, aggression, injuryproneness, professionalism, potential, talent) VALUES ('$fornavntekst[$a]','$efternavntekst[$a]','$alder[$a]','$arr[$b]','$arr[$b+1]','$arr[$b+2]','$arr[$b+3]','$arr[$b+4]','$arr[$b+5]','$arr[$b+6]','$arr[$b+7]','$arr[$b+8]','$arr[$b+9]','$arr[$b+10]','$arr[$b+11]','$arr[$b+12]','$arr[$b+13]',rand(1,20),rand(1,20),rand(1,20),rand(1,20),rand(1,20))";

"Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting ']' "
Avatar billede trophymanager Nybegynder
30. januar 2005 - 23:04 #12
$query = "INSERT INTO players (fornavn, efternavn, alder, stamina, strength, pace, technique, crossing, marking, tackling, passing, heading, finishing, longshots, setpieces, workrate, positioning, aggression, injuryproneness, professionalism, potential, talent) VALUES ('$fornavntekst[$a]','$efternavntekst[$a]','$alder[$a]','$arr[$b]','$arr[$b+1]',
'$arr[$b+2]','$arr[$b+3]','$arr[$b+4]','$arr[$b+5]','$arr[$b+6]','$arr[$b+7]',
'$arr[$b+8]','$arr[$b+9]','$arr[$b+10]','$arr[$b+11]','$arr[$b+12]','$arr[$b+13]'
,rand(1,20),rand(1,20),rand(1,20),rand(1,20),rand(1,20))";
Avatar billede detox Nybegynder
30. januar 2005 - 23:04 #13
For en ordens skyld. Du kan godt bruge INSERT med denne syntax:

INSERT INTO players SET SET fornavn='$fornavntekst[$a]', efternavn='$efternavntekst[$a]', osv.....
Avatar billede michael_stim Ekspert
30. januar 2005 - 23:05 #14
De felter der er integer eller lign. (tal), skal ikke have '' omkring.
Avatar billede michael_stim Ekspert
30. januar 2005 - 23:07 #15
Det har jeg aldrig prövet eller set, detox. Dermed ikke sagt at det ikke fungerer.
Avatar billede detox Nybegynder
30. januar 2005 - 23:07 #16
Prøv evt. at sætte: or die(mysql_error()) på dine forespørgsler:

$result = mysql_query($query) or die(mysql_error());
Avatar billede detox Nybegynder
30. januar 2005 - 23:09 #17
michael stim -> se manualen:
http://dev.mysql.com/doc/mysql/en/insert.html (det andet eksempel).
Avatar billede trophymanager Nybegynder
30. januar 2005 - 23:10 #18
detox du er min helt :)
også tak til alle andre.. Det viser sig selvfølgelig at jeg har stavet: profressinalism... I den første string. Det jo ikke helt rigtigt. Smid et svar detox.
Avatar billede trophymanager Nybegynder
30. januar 2005 - 23:10 #19
og tak til alle jer andre for jeres tid.
Avatar billede michael_stim Ekspert
30. januar 2005 - 23:12 #20
Velbekomme ;o)
Avatar billede coderdk Praktikant
30. januar 2005 - 23:13 #21
michael_stim og gustav-olsen: Vrøvl.

INSERT INTO tabel SET felt1 = 123, felt2 = 'abc'

Virker ganske fint, prøv selv eller læs dokumentationen ;)

Du kan også sagtens sige: INSERT INTO tabel SET integer_felt = '123'

Det fungerer også fint, og anbefales i tilfælde med PHP, da du så får lidt ekstra sikkerhed imod SQL-injection:

$sql = "INSERT INTO tabel SET int_felt = '" . mysql_escape_string( $_GET['vaerdi'] ) . "'";
Avatar billede detox Nybegynder
30. januar 2005 - 23:13 #22
Velbekommen og for lige at slå det fast osse: Det gør ingen forskel for MySQL om du bruger ' ' omkring tal, så for nemheds skyld, så brug det altid.
Avatar billede michael_stim Ekspert
30. januar 2005 - 23:16 #23
detox>>Der er vi så forskellige. Jeg foreträkker at seperere tal og tekst og bruge den alm. sql-standard.
Avatar billede 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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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