Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][SQL][PHP]Zmienna w formularzu php, tworzenie tabeli
Nidan23
post 27.06.2019, 21:15:21
Post #1





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

Ostrzeżenie: (10%)
X----


Witam, zapewne kolejny śmieciowy post, jednak mam problem, ponieważ, pracuję nad podstawowym panelem do zarządzania witryną i natrafiłem na problem z tworzeniem tabeli poprzez formularz na stronie, dostaję error:

Error creating table: 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 ''kurde_mac_znowu_nie_dziala' LIKE klan' at line 1

  1. if (isset($_POST['send']))
  2. {
  3. $tabela = $_POST['send2'];
  4.  
  5. // Create connection
  6. $conn = new mysqli($servername, $username, $password, $dbname);
  7. // Check connection
  8. if ($conn->connect_error) {
  9. die("Connection failed: " . $conn->connect_error);
  10. }
  11.  
  12. // sql to create table
  13. $sql = "CREATE TABLE '$tabela' LIKE klan";
  14.  
  15. if ($conn->query($sql) === TRUE) {
  16. echo "Table ".$tabela." created successfully";
  17. } else {
  18. echo "Error creating table: " . $conn->error;
  19. }
  20. }
  21. $conn->close();
  22. ?>


A formularz ma się tak:

  1. <form method="POST" action="stabela.php">
  2. <textarea class="rej" name="send2" maxlength="255">Nazwa Tabeli</textarea>
  3. <br>
  4. <br>
  5. <input class="pz" type="submit" value="Prześlij" name="send">
  6. </form>


Gdy zamiast textarea używam input, także nie działa, z tym samym błędem.

Zauważyliście jakieś błędy? Jakieś pomysły?
Go to the top of the page
+Quote Post
SmokAnalog
post 27.06.2019, 21:40:22
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Zamień apostrofy przy nazwie tabeli na gravisy, czyli:

  1. $sql = "CREATE TABLE `$tabela` LIKE klan";
Go to the top of the page
+Quote Post
Nidan23
post 27.06.2019, 21:45:00
Post #3





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

Ostrzeżenie: (10%)
X----


JAK!!! To działa, jakim cudem, przecież gdy używam '".$zmienna."' to działa normalnie, tylko tutaj nie.

Dzięki
Go to the top of the page
+Quote Post
SmokAnalog
post 27.06.2019, 21:45:58
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Dla SQL-a tekst w apostrofach to string, a nazwy baz danych/tabel/kolumn itp. nie są w SQL stringami smile.gif
Go to the top of the page
+Quote Post
Nidan23
post 27.06.2019, 22:02:12
Post #5





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

Ostrzeżenie: (10%)
X----


Cytat(SmokAnalog @ 27.06.2019, 22:45:58 ) *
Dla SQL-a tekst w apostrofach to string, a nazwy baz danych/tabel/kolumn itp. nie są w SQL stringami smile.gif


To dużo zmienia, dzięki wink.gif

Masz może jakiś pomysł jak przedstawić nazwy tabel w formularzu w tagu select?

Mam taki kod i on wyświetla ilość tabel, ale nie ma ich nazw, są to pola puste:

  1. <form method="POST" action="sutabela.php">
  2. <select class="form-control bg-success text-white" name="customers" onchange="showCustomer(this.value)">
  3. <option value="">Wybierz Gracza:</option>
  4. <?php
  5. $sql = "SHOW TABLES from gandalf";
  6. $conn->query('SET NAMES utf8');
  7. $conn->query('SET CHARACTER_SET utf8_unicode_ci');
  8. $result = $conn->query($sql);
  9.  
  10. if ($result->num_rows > 0) {
  11. while($row = $result->fetch_assoc()) {
  12. echo "<option value='".$row[0]."'>".$row[0]."</option>";
  13. }
  14. } else {
  15. echo "<br><b><center><font size='6' color='red'>Wystąpił błąd w bazie danych</font></b></center>";
  16. }?>
  17. </select>
  18. <br>
  19. <br>
  20. <input class="pz" type="submit" value="Prześlij" name="utprzeslij">
  21. </form>
Go to the top of the page
+Quote Post
SmokAnalog
post 27.06.2019, 22:16:42
Post #6





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Spróbuj zamienić $result->fetch_assoc() na $result->fetch_row()
Go to the top of the page
+Quote Post
Nidan23
post 27.06.2019, 22:21:45
Post #7





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

Ostrzeżenie: (10%)
X----


Cytat(SmokAnalog @ 27.06.2019, 23:16:42 ) *
Spróbuj zamienić $result->fetch_assoc() na $result->fetch_row()


No nie mam słów, masz dzisiaj chyba jakiś dzień oświecenia, albo pomocy dla zwierząt, bo to ponownie zadziałało, a wiesz może jak rozwiązać problem
  1. <option value='".$row[0]."'>


Bo o ile się nie mylę, to może być tylko integer.
Go to the top of the page
+Quote Post
SmokAnalog
post 27.06.2019, 22:26:07
Post #8





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


To nie musi być integer, ale jak dajesz string, to powinieneś ładnie to zabezpieczyć np. z htmlspecialchars.
Go to the top of the page
+Quote Post
Nidan23
post 27.06.2019, 22:27:11
Post #9





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

Ostrzeżenie: (10%)
X----


Cytat(SmokAnalog @ 27.06.2019, 23:26:07 ) *
To nie musi być integer, ale jak dajesz string, to powinieneś ładnie to zabezpieczyć np. z htmlspecialchars.


Ponownie Dziękuję działa wink.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 16:53