Avatar billede nc85 Nybegynder
17. juni 2008 - 18:48 Der er 5 kommentarer

SQL syntax error

Prøver at uploade en fil, og får en syntax fejl, min kode:
<? session_start(); ?>
<? include("../includes/cnx.php"); ?>
<? include("../includes/rtrnfuncs.php"); ?>
<?
//Hent variabler

$Doc_ID = $_REQUEST['doc_id'];

?>

<?


if($_REQUEST['slet'] == "slet") {
        $oldidfiler = mysql_escape_string($_REQUEST['idfiles']);

        $SQL = "SELECT * FROM files WHERE idfiles = $oldidfiler";
        $mq_oldfil = mysql_query($SQL) or die(mysql_error());
        $oldfil_arr = mysql_fetch_assoc($mq_oldfil);

        // Description er egentlig filnavnet
        // Filename er egentlig beskrivelsen

        $oldfil = $oldfil_arr['description'];
       
        unlink("../../filer/$oldidfiler/" . $oldfil);
        $SQL = "DELETE FROM files WHERE idfiles = '$oldidfiler'";
        //echo $SQL;
        $mq = mysql_query($SQL) or die(mysql_error());
       
   
}
    if($_REQUEST['submit'] == "Upload") {
    $Doc_ID = $_REQUEST['doc_id'];
    if ($_FILES['bilag']['size'] == 0) {
    ?>
        <script language="JavaScript" type="text/javascript">
        alert('Du skal vælge en fil!');       
        </script>
        <?
    }
    elseif ($_REQUEST['beskrivelse'] == "") {
    ?>
        <script language="JavaScript" type="text/javascript">
        alert('Du skal lave en beskrivelse');       
        </script>
        <?
    } else {
       
        $desc = mysql_escape_string($_REQUEST['beskrivelse']);
        $filename = mysql_escape_string($_FILES['bilag']['name']);
        $sql = "INSERT INTO files (doc_id, filename, description) VALUES ('$Doc_ID','$desc','$filename')";
        echo $sql;
       
        echo '<script>alert('.$sql.');</script>';
       
        mysql_query($sql) or die(mysql_error());
       
        $fileid = mysql_insert_id();
       
               
        if (! file_exists("../../filer/$fileid")) {
            mkdir("../../filer/$fileid");
        }
       
        move_uploaded_file($_FILES['bilag']['tmp_name'],"../../filer/$fileid/" . $_FILES['bilag']['name']);       

    }
}
?>

<body style="background-color: #f3f3f3;">
<link href="../css/main.css" rel="stylesheet" type="text/css" />
<form enctype="multipart/form-data" action="edit-file.php&doc_id=<?=$Doc_ID;?>" method="post">
    <table width="450" border="0" cellspacing="5" cellpadding="0">
        <tr>
            <td>
                <label for="bilag">Fil:</label>
                <br />
                <input type="file" name="bilag" style="width:250px;" />
            </td>
        </tr>
        <tr>
            <td>
                <label for="beskrivelse">Beskrivelse:</label>
                <br />
                <input type="text" name="beskrivelse" style="width:300px;" />
            </td>
        </tr>
        </tr>
            <td><input type="submit" name="Upload" value="Upload" /></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td>
                <strong>Eksisterende filer</strong>
            </td>
        </tr>
        <tr>
            <td>
                <?
                $SQL = "SELECT * FROM files WHERE doc_id = $Doc_ID";
                echo $SQL;
                $mq_gf = mysql_query($SQL) or die(mysql_error());
                if (mysql_num_rows($mq_gf) > 0) {
                ?>
               
                <?
                while ($fil = mysql_fetch_assoc($mq_gf)) {
                ?>
                <p><?=$fil['description']?> | <?=$fil['filename']?> <a href="edit-file.php?doc_id=<?=$Doc_ID?>&slet=slet&idfiles=<?=$fil['idfiles']?>"><img src="../images/delete.gif" alt="Slet" title="Slet" border="0">
                </a></p><hr />
                <?
                    }
                ?>
               
                <?
                } else {?>
                Ingen
                <?
                }
                ?>
            </td>
        </tr>
    </table>
</form>
</body>
-------------------------------------------

Min db ser sådan ud:

    Feltnavn      Datatype      Attributter      Nulværdi      Standardværdi      Ekstra      Handling
    idfiles     int(11)         Nej         auto_increment     Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    doc_id     int(11)         Nej     0         Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    filename     text         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
    description     text         Nej             Gennemse bestemte værdier     Ændre     Slet     Primær     Unik     Indeks     Fuldtekst
Avatar billede coderdk Praktikant
17. juni 2008 - 18:49 #1
Hvad skriver den præcist?
Avatar billede nc85 Nybegynder
17. juni 2008 - 20:47 #2
DEn skriver : 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

Har prøvet at skrive SQL ud, men det reagere den ikke på...
Avatar billede nc85 Nybegynder
17. juni 2008 - 21:10 #3
Har nu ændret lidt i det, og får nu ingen SQL fejl længere, men den hverken smider noget i databasen, eller uploader noget til serveren, og skriver ikke min INSERT SQL ud ??

<? session_start(); ?>
<? include("../includes/cnx.php"); ?>
<? include("../includes/rtrnfuncs.php"); ?>
<?
//Hent variabler

$Doc_ID = $_REQUEST['doc_id'];

?>

<?


if($_REQUEST['slet'] == "slet") {
        $oldidfiler = mysql_escape_string($_REQUEST['idfiles']);

        $SQL = "SELECT * FROM files WHERE idfiles = $oldidfiler";
        $mq_oldfil = mysql_query($SQL) or die(mysql_error());
        $oldfil_arr = mysql_fetch_assoc($mq_oldfil);

        // Description er egentlig filnavnet
        // Filename er egentlig beskrivelsen

        $oldfil = $oldfil_arr['description'];
       
        unlink("../../filer/$oldidfiler/" . $oldfil);
        $SQL = "DELETE FROM files WHERE idfiles = '$oldidfiler'";
        //echo $SQL;
        $mq = mysql_query($SQL) or die(mysql_error());
       
   
}
    if (isset($_POST['submit'])) {
    $Doc_ID = $_REQUEST['doc_id'];
    if ($_FILES['bilag']['size'] == 0) {
    ?>
        <script language="JavaScript" type="text/javascript">
        alert('Du skal vælge en fil!');       
        </script>
        <?
    }
    elseif ($_REQUEST['beskrivelse'] == "") {
    ?>
        <script language="JavaScript" type="text/javascript">
        alert('Du skal lave en beskrivelse');       
        </script>
        <?
    } else {
       
        $desc = mysql_escape_string($_REQUEST['beskrivelse']);
        $filename = mysql_escape_string($_FILES['bilag']['name']);
        $sql = "INSERT INTO files (doc_id, filename, description) VALUES ('$Doc_ID','$desc','$filename')";
        echo $sql;
       
        //echo '<script>alert('.$sql.');</script>';
       
        mysql_query($sql) or die(mysql_error());
       
        $fileid = mysql_insert_id();
       
               
        if (! file_exists("../../filer/$fileid")) {
            mkdir("../../filer/$fileid");
        }
       
        move_uploaded_file($_FILES['bilag']['tmp_name'],"../../filer/$fileid/" . $_FILES['bilag']['name']);       

    }
}
?>

<body style="background-color: #f3f3f3;">
<link href="../css/main.css" rel="stylesheet" type="text/css" />
<form method="post" action="edit-file.php" enctype="multipart/form-data">
    <input type="hidden" name="doc_id" value="<?=$Doc_ID;?>" />
    <table width="450" border="0" cellspacing="5" cellpadding="0">
        <tr>
            <td>
                <label for="bilag">Fil:</label>
                <br />
                <input type="file" name="bilag" style="width:250px;" />
            </td>
        </tr>
        <tr>
            <td>
                <label for="beskrivelse">Beskrivelse:</label>
                <br />
                <input type="text" name="beskrivelse" style="width:300px;" />
            </td>
        </tr>
        </tr>
            <td><input type="submit" name="Upload" value="Upload" /></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td>
                <strong>Eksisterende filer</strong>
            </td>
        </tr>
        <tr>
            <td>
                <?
                $SQL = "SELECT * FROM files WHERE doc_id = '$Doc_ID'";
                echo $SQL;
                echo $Doc_ID;
                $mq_gf = mysql_query($SQL) or die(mysql_error());
                if (mysql_num_rows($mq_gf) > 0) {
                ?>
               
                <?
                while ($fil = mysql_fetch_assoc($mq_gf)) {
                ?>
                <p><?=$fil['description']?> | <?=$fil['filename']?> <a href="edit-file.php?doc_id=<?=$Doc_ID?>&slet=slet&idfiles=<?=$fil['idfiles']?>"><img src="../images/delete.gif" alt="Slet" title="Slet" border="0">
                </a></p><hr />
                <?
                    }
                ?>
               
                <?
                } else {?>
                Ingen
                <?
                }
                ?>
            </td>
        </tr>
    </table>
</form>
</body>
Avatar billede Slettet bruger
22. juni 2008 - 11:53 #4
Jeg TROR nok at denne linie skal ændres:

$SQL = "SELECT * FROM files WHERE idfiles = $oldidfiler";

til:

$SQL = "SELECT * FROM files WHERE idfiles = '$oldidfiler'";

Men det er ikke sikkert, og det er jo heller ikke sikkert det løser dit problem, men prøv :-)

Ole.
Avatar billede dkfire Nybegynder
22. juni 2008 - 12:10 #5
Hvor kommer din $Doc_ID fra ??
<input type="hidden" name="doc_id" value="<?=$Doc_ID;?>" />

En anden ting, har du huske at slå fejlbeskeder til for din webhotel ??
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