Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

Błąd SQL 1064

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

Błąd SQL 1064

Post 20.04.2017, 14:42:18

Mam skrypt który przesyła pliki na serwer.
Można przesłać kilka na raz. jednocześnie tworzone są rekordy w bazie danych pod przyszłe wypełnienie danymi.
Wszystko niby dobrze ale od czasu do czasu sql wypluwa błędy ( nie za każdym razem)
Kod: Zaznacz cały
CREATE TABLE 0e790c6a85ab175dc617d2dd12f17419 (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,NAZWA_KANALU VARCHAR(1024),NAZWA_EPG VARCHAR(1024),EPG_URL VARCHAR(1024),LOGO VARCHAR(1024),GRUPA VARCHAR(30),URL VARCHAR(1024),STATUS VARCHAR(1024))<br>SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '0e790c6a85ab175dc617d2dd12f17419 (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,' at line 1

Kod: Zaznacz cały
<?php
header("Content-Type: application/xml; charset=utf-8");
$token=hash('md5', str_replace('-','',(date("d-H-i-m-s"). rand())));
$_SESSION['tablica_plikow']="";
$GLOBALS['plik']="";
// A list of permitted file extensions
$allowed = array('txt','m3u');

if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){

   $extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);

   if(!in_array(strtolower($extension), $allowed)){
   
      echo '{"status":"error","errorCode":"Niepoprawny typ pliku"}';
      exit;
   }

   if(move_uploaded_file($_FILES['upl']['tmp_name'], 'uploads/'. $token)){
      $dir          = "uploads/";
$return_array = array();
$GLOBALS['plik']=$token;// narazie globalna
if(is_dir($dir)){

    if($dh = opendir($dir)){
        while(($file = readdir($dh)) != false){

            if($file == "." or $file == ".."){


            } else {
                $return_array[] = $file; // Add the file to the array
            

            }
        }
      
      $_SESSION['tablica_plikow']=$return_array;
         
      //exit;
      
include_once('dodaj_do_db.php');
         //var_dump($GLOBALS['plik']);
         //usleep(5000);
            utworz_liste();// wywołanie funkcji dodawania do bazy
            
            $GLOBALS['plik']='';
            
    }

 
}
rename('uploads/'. $token, 'TEMP/'. $token);
//usun_zawartosc('uploads');
$result=array();
$result['status']='success';
$result['dir_']=$return_array;

  echo json_encode($result);
   //   echo '{"status":"success"}';
      exit;
   }
}
usun_zawartosc('uploads');
echo '{"status":"error"}';
exit;

function usun_zawartosc($kat)//usuwanie wybranego katalogu
{$katalog = opendir($kat);
while($plik = readdir($katalog)) {
   if($plik != '.' AND $plik != '..') {
      unlink($kat.'/'.$plik);
   }
}
};
?>

Kod: Zaznacz cały
function utworz_liste()
{
$nazwaBazy = $GLOBALS['plik'];

polaczZbaza();   
utworz_tabele($nazwaBazy);
}

function polaczZbaza($dbName="generator")
{
try {
    $conn = new PDO("mysql:host=$GLOBALS[servername];dbname=$dbName",$GLOBALS['username'],$GLOBALS['password']);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $conn->exec('SET NAMES utf8') ;
$conn->exec('SET CHARACTER SET utf8');
//$conn -> query ('SET CHARACTER_SET utf8_unicode_ci');
//   wyslij_tekst("Connected successfully",1);
   
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }
   $GLOBALS['conn'] =$conn;
}
function utworz_tabele($tablica)
 {$conn=$GLOBALS['conn'] ;
 //echo $tablica[0];
 $nazwaTabeli=$tablica;
 //var_dump($nazwaTabeli . 'lala');
 //exit;
//return;
$temp_=  $nazwaTabeli ." VARCHAR(30)";
//wyslij_tekst($temp_,5);
//for($a=0;$a<= $y=count($temp);$a++)
//{
   //$temp_=$temp_.$temp($a);


//}

   try {
   
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   //$nazwaTabeli=$GLOBALS['nazwaBazy']."_".$nazwaTabeli;
   $sql ="CREATE TABLE $nazwaTabeli (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,NAZWA_KANALU VARCHAR(1024),NAZWA_EPG VARCHAR(1024),EPG_URL VARCHAR(1024),LOGO VARCHAR(1024),GRUPA VARCHAR(30),URL VARCHAR(1024),STATUS VARCHAR(1024))";
    $conn->exec($sql);

    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }    
 }
sasiadstar
Posty: 92
Dołączył(a): 26.08.2016

Re: Błąd SQL 1064

Post 20.04.2017, 15:14:58

problem jest z nazwą tabeli (0e790c6a85ab175dc617d2dd12f17419). W tym przypadku łamana jest zasada
An identifier starting with a numeral, followed by an 'e', may be parsed as a floating point number, and needs to be quoted.

https://mariadb.com/kb/en/mariadb/ident ... ther-rules
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19533
Dołączył(a): 14.04.2002

Re: Błąd SQL 1064

Post 20.04.2017, 21:41:11

Przeczytane, zrozumiane(coś tam zawsze), zapamiętane
Dodałem _przed i po problemie.
Jak zwykle dozgonnie wdzięczny.
Szkoda że do K.K mi nie po drodze bo bym ci browca postawił :)
sasiadstar
Posty: 92
Dołączył(a): 26.08.2016


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość

Hosting, Domeny, SSL
iCash

Subskrypcja

Mamy 50185 zarejestrowanych użytkowników.
Najnowszy użytkownik: sskijop


Nasi użytkownicy napisali:

  • 935002 wiadomości
  • w 246317 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)