Avatar billede jop... Nybegynder
10. august 2004 - 08:05 Der er 25 kommentarer og
4 løsninger

SQL error

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

--------------------------------------------------------
Er ret sikker på, at det er denne linje det er galt med:
---------------------------------------------------------
mysql_query("INSERT INTO test (kommentar, billede) value('$_POST[komm]','$_FILES[upload][name]'") or die(mysql_error());

--------------------------------------------------------
Men I får lige hele scriptet  ;-)
--------------------------------------------------------

//Tilslut til database
$db_connect = mysql_connect("xxxxxxx", "xxxxxxxx", "xxxxxx") or die(mysql_error());
//Vælg database
mysql_select_db("vipzdk", $db_connect) or die(mysql_error());
//Sti der skal uploades til
$sti = "/usr/local/www/vipzdk/www/hq/test/";  //Husk denne mappe må ikke være skrivebeskyttet
//Sætter filtyperne der er tilladt her i arrayet
$allow_files = array("jpg", "bmp", "png", "gif");
//Sætter max størrelse på filen
//Husk at i php.ini er max størrelse sat til 2 mb som standard,
//og kan give fejl hvis filer er over 2 mb
$size = 20000000; //I bytes
//Finder hvilket filtype der er tale om
$ext = pathinfo($_FILES['upfile']['name']);
//Tjekker om filtypen er tilladt
if(in_array($ext["extension"], $allow_files)) {
    //Tjekker om filen findes
    if(!file_exists("$sti".$_FILES['upfile'][name]."")) {
        //Tjekker om filen er større end det tilladte
        if($_FILES['upfile']['size'] <= $size) {
            //Hvis der bliver lavet en fil
            if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {
                //Flyt filen til det dir og omdøb den til dens rigtige filnavn
                move_uploaded_file($_FILES['upfile']['tmp_name'], "$sti".$_FILES['upfile']['name']."");
                mysql_query("INSERT INTO test (kommentar, billede) value('$_POST[komm]','$_FILES[upload][name]'") or die(mysql_error());
            } else {
                echo "ERROR";
            }
        }else {
            echo "Filen er for stor, prøv igen";
        }
    } else {
        echo "Filen eksisterer, prøv igen";
    }
} else {
    echo "Filtypen er ikke tilladt, prøv igen";
}
?>

------------------------------
Hvad siger I, kan den knækkes?  :-)

Mvh René
Avatar billede jop... Nybegynder
10. august 2004 - 08:06 #1
Den uploader fint filen og det hele, men får ikke indsat en linje i MySQL-databasen?
Avatar billede hf Nybegynder
10. august 2004 - 08:20 #2
Syntaxen for INSERT er:
INSERT INTO table_name (column1, column2,...)
VALUES (value1, value2,....)
Du mangler et s - så value bliver til values
Avatar billede jop... Nybegynder
10. august 2004 - 08:51 #3
Ja ok..  :-)  Men den kommer stadig med samme fej..  :-/
Avatar billede Slettet bruger
10. august 2004 - 08:54 #4
Prøv med

INSERT INTO `test`
Avatar billede hf Nybegynder
10. august 2004 - 08:55 #5
Prøv at indsætte en test for at checke SQL'en:
echo "INSERT INTO test (kommentar, billede) value('$_POST[komm]','$_FILES[upload][name]'";

istedet for:
mysql_query("INSERT INTO test (kommentar, billede) value('$_POST[komm]','$_FILES[upload][name]'") or die(mysql_error());
Avatar billede jop... Nybegynder
10. august 2004 - 08:59 #6
INSERT INTO test (kommentar, billede) values ('Tester lige','[name]'

Den finder altså ikke filnavnet?
Avatar billede Slettet bruger
10. august 2004 - 09:00 #7
hf: Nu glemte du jo det s.

jop...:  Du mangler en slut-parantes efter VALUES-delen.
Avatar billede Slettet bruger
10. august 2004 - 09:01 #8
INSERT INTO test (kommentar, billede) values ('{$_POST['komm']}','{$_FILES['upload']['name']}')";
Avatar billede Slettet bruger
10. august 2004 - 09:03 #9
Forresten kalder du den upfile andre steder men upload i din sql, så det skal rettes til det rigtige.
Avatar billede jop... Nybegynder
10. august 2004 - 09:03 #10
s'et havde jeg selv fanget...

Nu skriver den:
INSERT INTO test (kommentar, billede) values ('Tester lige','[name]')

René
Avatar billede jop... Nybegynder
10. august 2004 - 09:04 #11
2 sec
Avatar billede jop... Nybegynder
10. august 2004 - 09:05 #12
INSERT INTO test (kommentar, billede) values ('Tester lige','Array[name]')  ??

Hvad betyder det?
Avatar billede Slettet bruger
10. august 2004 - 09:12 #13
Har du rettet upload til upfile?
Avatar billede coderdk Praktikant
10. august 2004 - 09:16 #14
lav

                mysql_query("INSERT INTO test (kommentar, billede) value('$_POST[komm]','$_FILES[upload][name]'") or die(mysql_error());

om til

                $sql = "INSERT INTO test (kommentar, billede) value('" . mysql_escape_string( $_POST['komm'] ) . "','" . $_FILES['upload']['name'] . "'";
                mysql_query( $sql ) or die(mysql_error());

Gør det til en vane, så er det nemmere at debugge, så tilføjer du bare echo foran "$sql =" hvis du gerne vil vide hvad den indeholder... mysql_escape_string sørger for at lave ' om til \' i de kommentarer der postes...
Avatar billede jop... Nybegynder
10. august 2004 - 09:24 #15
upload er rettet til upfile istedet.. VIrker stadig ikke..
Avatar billede jop... Nybegynder
10. august 2004 - 09:27 #16
Vi kommer tættere på..  :-)

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'value('Tester lige','status1.gif'' at line 1
Avatar billede Slettet bruger
10. august 2004 - 09:29 #17
Det er det famøse s igen
Avatar billede jop... Nybegynder
10. august 2004 - 09:31 #18
det er tættere på at virke uden..  :-D  laver jeg s'et skriver den:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Men mangler der ikke også en parantes? efter:
values ('" . mysql_escape_string( $_POST['komm'] ) . "','" . $_FILES['upfile']['name'] . "'";
Avatar billede Slettet bruger
10. august 2004 - 09:35 #19
Jo

$sql = "INSERT INTO test (kommentar, billede) value('" . mysql_escape_string( $_POST['komm'] ) . "','" . $_FILES['upload']['name'] . "')";
Avatar billede jop... Nybegynder
10. august 2004 - 09:43 #20
Så skal jeg ikke forstyrre mere..  :-)

Giver I ikke lige et svar Sandbox og coderdk?

Så fordeler jeg nogle point..

René
Avatar billede Slettet bruger
10. august 2004 - 09:48 #21
Kommer her
Avatar billede jop... Nybegynder
10. august 2004 - 09:53 #22
Hvordan sætter jeg egentlig flere variabler ind? har (overskrift, public, indsender, tekst, billede, tid) i det endelige script..

dvs.:
$sql = "INSERT INTO vipz_nyheder (overskrift, public, indsender, tekst, tid, billede) values ('" . mysql_escape_string( $_POST['komm'] ) . "','" . $_FILES['upfile']['name'] . "')";

//René
Avatar billede jop... Nybegynder
10. august 2004 - 09:58 #23
er det mon:

$sql = "INSERT INTO vipz_nyheder (overskrift, public, indsender, tekst, tid, billede) values ('" . mysql_escape_string( $_POST['$overskrift', '$public', '$indsender', '$tekst', 'now()'] ) . "','" . $_FILES['upfile']['name'] . "')";
Avatar billede jop... Nybegynder
10. august 2004 - 10:05 #24
Det var det vist ikke  :-)
Avatar billede Slettet bruger
10. august 2004 - 10:13 #25
Nej, hver enkelt stykke data skal behandles for sig selv. Prøv med:

$sql = "INSERT INTO vipz_nyheder (overskrift, public, indsender, tekst, tid, billede) values (";
$sql .= "'" . mysql_escape_string($_POST['overskrift']) . "'";
$sql .= ",";
$sql .= "'" .  mysql_escape_string($_POST['public']) . "'";
$sql .= ",";
$sql .= "'" .  mysql_escape_string($_POST['indsender']) . "'";
$sql .= ",";
$sql .= "'" .  mysql_escape_string($_POST['tekst']) . "'";
$sql .= ",";
$sql .= "now()";
$sql .= ",";
$sql .= "'" .  mysql_escape_string($_FILES['upfile']['name']) . "'";
$sql .= ")";
Avatar billede coderdk Praktikant
10. august 2004 - 10:13 #26
$sql = "
  INSERT INTO
      vipz_nyheder (
        overskrift
        ,public
        ,indsender
        ,tekst
        ,tid
        ,billede)
    values (
        '" . mysql_escape_string( $_POST['$overskrift' ) . "'
        ,'" . mysql_escape_string( $public ) . "'
        ,'" . mysql_escape_string( $indsender ) . "'
        ,'" . mysql_escape_string( $tekst ) . "'
        ,NOW()
        ,'" . $_FILES['upfile']['name'] . "')";


:)
Avatar billede coderdk Praktikant
10. august 2004 - 10:13 #27
:)
Avatar billede coderdk Praktikant
10. august 2004 - 10:14 #28
Erh, mit første svar troede jeg ikke dukkede op :P
Avatar billede jop... Nybegynder
10. august 2004 - 12:01 #29
Jeg takker mange gange!
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