Avatar billede dytti Novice
23. maj 2010 - 12:06 Der er 6 kommentarer og
1 løsning

syntax fejl

Er der nogen der kan sige mig hvorfor jeg får denne fejl.
Jeg kan bare ikke finde den:

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 't But One Kind Of Blues.mp3, '479774', '/upload/uploadify/upload_name.php', 'Gæs' at line 2

Scriptet der køre den:
if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
    $newFileName = $_GET['name'].'_'.$_GET['lenght'].'-'.$_FILES['Filedata']['name'];
    $targetFile =  str_replace('//','/',$targetPath) . $newFileName;
   
    $_SESSION['targetFile'] = $_FILES['Filedata']['name'];
    $_SESSION['url'] = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
    $_SESSION['fileSize'] = $_FILES['Filedata']['size'];
    $_SESSION['style'] = $_GET['name'];
    $_SESSION['lenght'] = $_GET['lenght'];
   
   
   
   
    // Uncomment the following line if you want to make the directory if it doesn't exist
    // mkdir(str_replace('//','/',$targetPath), 0755, true);

 
    move_uploaded_file($tempFile,$targetFile);
}

if ($newFileName)
    echo $newFileName;
else // Required to trigger onComplete function on Mac OSX
    echo '1';
 
?><br />

<?php
// hent værdier til DB

$style = $_SESSION['style'];
$lenght = $_SESSION['lenght'];
$targetFile = $_SESSION['targetFile'];
$fileSize = $_SESSION['fileSize'];
$url = $_SESSION['url'];
$user = $session->username;
$timestamp = time();

include ("config.php");
include ("opendb.php");

$query = "INSERT INTO uploads (style, lenght, targetFile, fileSize, url, user, timestamp)
VALUES ('$style', '$lenght', '$targetFile, '$fileSize', '$url', '$user', '$timestamp')";
if (!mysql_query($query))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";


Og min DB:
CREATE TABLE uploads(
style VARCHAR(50),
lenght VARCHAR(30),
targetFile VARCHAR(90),
fileSize VARCHAR(90),
url VARCHAR(90),
user VARCHAR(90),
timestamp VARCHAR(80));
Avatar billede claes57 Ekspert
23. maj 2010 - 12:12 #1
er du sikker på, at 'lenght' er stavet ens forkert hele vejen?
jeg ville lave en erstatning med length overalt.

og til fejlsøgning - udskriv din sql-sætning i stedet for at køre den, så ser du let felen (fx manglende data)
Avatar billede RexReptiles Nybegynder
23. maj 2010 - 12:20 #2
umiddelbart ville jeg sige det har noget med specialtegn at gøre, jeg kan ik lige se hvad linie 2 har af fejl.
Avatar billede dkfire Nybegynder
23. maj 2010 - 12:35 #3
Det mangler en ' efter $targetFile i din sql.
Og så vil jeg give RexReptiles ret, der er sikkert specialtegn i filnavnet.
Avatar billede dytti Novice
23. maj 2010 - 13:19 #4
hej alle
Jeg kan se at i "url" er der flg. tegn: / _ og .
og i "targetFile" er der et '

Jeg har ændret felterne i "uploads" fra "varchar" til "char" men det har ikke ændret noget.

Jeg har ligeledes ændret "lenght" overalt.

Intet har hjulpet.
Avatar billede dytti Novice
23. maj 2010 - 13:29 #5
Det var filnavnet den var gal med.
Prøvede en anden fil uden ' i navnet, og så virkede det.

Men hvordan får jeg det så til at acceptere specialtegn?
Avatar billede dytti Novice
23. maj 2010 - 14:23 #6
Ved ikke om det er den helt korrekte måde at gøre det på, men jeg fandt ud af det med addslashes.

$targetFile = addslashes($_SESSION['targetFile']);

I var alle inde på det rigtige.
Smider i et svar, så lukker jeg.
Avatar billede RexReptiles Nybegynder
23. maj 2010 - 22:37 #7
yes, men sørg for at rename filer så folk ikke uploader .php eller andre ting som gir dem adgang.
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