Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nie mogę utworzyć tabeli o nazwie "1"
Forum PHP.pl > Forum > Bazy danych > MySQL
rw11
Witam wszystkich i z góry uprzedzam, że jestem "zielony" biggrin.gif . Mój problem polega na tym że nie mogę utworzyć tabeli o nazwie 1 lub 2,3,...

Formularz :
  1. <?php
  2. $polaczenie=mysql_connect("localhost","root","");
  3. echo '<html>';
  4. echo '<head>';
  5. echo '<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">';
  6. echo '<title>Nowa strona 1</title>';
  7. echo '</head>';
  8. echo '<body>';
  9. echo '<form method="get" action="nlokator.php">';
  10. echo 'Dodaj lokatora do wspólnoty : <br><br>';
  11. echo 'Wspólnota :<br>';
  12. echo '<select size="1" name="D1">';
  13. $db_list = mysql_list_dbs($polaczenie);
  14. while ($row = mysql_fetch_object($db_list)) {
  15. echo '<option>'.$row->Database.'</option>';}
  16. echo '</select><br>';
  17. echo 'Imię : <br>';
  18. echo '<input type="text" name="imie" size="30"><br>';
  19. echo 'Nazwisko : <br>';
  20. echo '<input type="text" name="nazwisko" size="30"><br>';
  21. echo 'Nr lokalu : <br>';
  22. echo '<input type="text" name="lokal" size="30"><br><br>';
  23. echo '<input type=submit value="Wyślij"/>';
  24. echo '</form>';
  25. echo '</body>';
  26. echo '</html>';
  27. ?>


plik który przetwarza :

  1. <?php
  2. $polaczenie=mysql_connect("localhost","root","");
  3.  
  4. mysql_select_db($_GET['D1']);
  5.  
  6. $zapytanie = 'CREATE TABLE '.$_GET['lokal'].' ( imie char(255) NOT NULL, nazwisko char(255) NOT NULL, PRIMARY KEY(nazwisko)) ';
  7. $wykonaj = mysql_query($zapytanie);
  8. if ($wykonaj == 1)
  9. echo 'Dodano lokatora_'.$_GET['imie'].' '.$_GET['nazwisko'].' '.$_GET['lokal'];
  10. else
  11. echo 'nie dodano lokatora_'.$_GET['imie'].' '.$_GET['nazwisko'].' '.$_GET['lokal'].'<br>';
  12. ?>


Będę wdzięczny za pomoc, wskazanie gdzie robię błąd sadsmiley02.gif
JaRoPHP
Do każdego wykonanego zapytania (każdej operacji) na bazie danych wywołaj funkcję mysql_error" title="Zobacz w manualu php" target="_manual - wtedy ewentualne błędy zostaną wyświetlone.
Dodatkowo wyświetl zapytanie jakie przetrzymujesz w zmiennej - to również powinno pozwolić wyłapać ewentualne problemy.

  1. <?php
  2. $polaczenie=mysql_connect("localhost","root","") or die(mysql_error());
  3.  
  4. mysql_select_db($_GET['D1']) or die(mysql_error());
  5.  
  6. $zapytanie = 'CREATE TABLE '.$_GET['lokal'].' ( imie char(255) NOT NULL, nazwisko char(255) NOT NULL, PRIMARY KEY(nazwisko)) ';
  7. echo $zapytanie;
  8. $wykonaj = mysql_query($zapytanie) or die(mysql_error());
  9.  
  10. if ($wykonaj == 1)
  11. echo 'Dodano lokatora_'.$_GET['imie'].' '.$_GET['nazwisko'].' '.$_GET['lokal'];
  12. else
  13. echo 'nie dodano lokatora_'.$_GET['imie'].' '.$_GET['nazwisko'].' '.$_GET['lokal'].'<br>';
  14. ?>
rw11
Po wykonaniu zapytania gdzie jako nazwa zapytania gdzie $_GET['lokal'] ma wartość 1 otrzymuję odpowiedź : "nie dodano lokatora_sdfs sdfsfsdfsd 1", natomiast jeżeli $_GET['lokal'] ma wartość np. "dasda" to tabela zostaje utworzona poprawnie. Wygląda to tak jakby nie można było utworzyć tabeli o nazwie jako liczba.
JaRoPHP
Dlaczego nie zastosujesz się do sugestii, aby wyświetlić komunikat błędu (funkcja mysql_error" title="Zobacz w manualu php" target="_manual)?

EDIT:
Tak to jest jak się nie doczytuje do końca...
Jak chcesz mieć nazwę tabeli w postaci cyfry (liczby), umieść tę nazwę w takie "ciapki": `
rw11
błąd wygląda tak :
nie dodano lokatora_sdfs sdfsfsdfsd 1 Something is wrong in your syntax obok '1 ( imie char(255) NOT NULL, nazwisko char(255) NOT NULL, PRIMAR' w linii 1

a zapytanie tak :

  1. <?php
  2. $zapytanie = 'CREATE TABLE '.$_GET['lokal'].' ( imie char(255) NOT NULL, nazwisko char(255) NOT NULL, PRIMARY KEY(nazwisko)) ';
  3. ?>


Gdzie wstawić te "ciapki" biggrin.gif
mysz
Naucz się jednej, ważnej rzeczy: w każdym zapytaniu używaj zawsze przy nazwach kolumn, tabel, aliasów i różnych takich znaku odwrotnego apostrofa: `
Znajduje się na lewo od cyfry 1 (razem z tyldą).
Nabranie tego nawyku ułatwia znacznie życie...

W sumie warto by było żebyś się też nauczył drugiej:
Pomyśl co się stanie jak podam takiego linka:

Kod
http://twoj_serwer.tld/adres/do/pliku.php?lokal=asd(field int not null)\n--
rw11
Dzięki serdeczne exclamation.gif! thumbsupsmileyanim.gif

Dla takich jak ja biggrin.gif, tak to powinno wyglądać aby działało :

  1. <?php
  2. $zapytanie = "CREATE TABLE `".$_GET['lokal']."` ( imie char(255) NOT NULL, nazwisko char(255) NOT NULL, PRIMARY KEY(nazwisko))";
  3. ?>
mysz
Cytat(rw11 @ 3.02.2007, 14:00:28 ) *
[...]tak to powinno wyglądać aby działało :


G. prawda. Miało wyglądać zupełnie inaczej, ale nie raczyłeś zastosować się do tego co zostało Ci napisane:

  1. <?php
  2. $lokal = sprawdz_czy_lokal_jest_bezpieczne($_GET['lokal']);
  3. $zapytanie = "CREATE TABLE `". $lokal ."` ( `imie` char(255) NOT NULL, `nazwisko` char(255) NOT NULL, PRIMARY KEY(`nazwisko`))";
  4. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.