Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SQL] Skrypt tworzący tabele, Skrypt tworzący tabele
Szagii
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 25.11.2016

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


Witam,
W ramach szkolnego projektu piszę prostego CMS'a. Został ukończony i teraz pracuje nad plikiem "instalacyjnym".
Napotkałem się na problem przy skrypcie tworzącą tabele, wyświetla się komunikat że tabela została utworzona a w rzeczywistości tak nie jest.
Liczę na jakąś podpowiedź, z góry dziękuję! (IMG:style_emoticons/default/biggrin.gif)

  1. <?php
  2.  
  3. if(isset($_POST['dbname']) && isset($_POST['login']) && isset($_POST['password'])){
  4.  
  5. $dbname = $_POST['dbname'];
  6. $login = $_POST['login'];
  7. $password = $_POST['password'];
  8.  
  9. try{
  10. $dbh = new PDO("mysql:host=localhost;dbname=$dbname", "$login", "$password",array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
  11. }
  12. catch (PDOException $e)
  13. {
  14. echo "Error".$e->getMessage();
  15. }
  16.  
  17. $new_table = "CREATE TABLE users
  18. (
  19. id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  20. login VARCHAR (50) NOT NULL,
  21. pass VARCHAR (100) NOT NULL,
  22. email VARCHAR (50) NOT NULL
  23. )";
  24.  
  25. try{
  26. $dbh->prepare($new_table);
  27. echo "<b>Table created</b>";
  28. }catch (PDOException $ex){
  29. echo "Error".$ex->getMessage();
  30. }
  31.  
  32. }else{
  33. Header('Location index.php');
  34. }
  35.  
  36. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Tomplus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Wklejałeś kod zapytania do konsoli w PMA?
Go to the top of the page
+Quote Post
Szagii
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 25.11.2016

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


Cytat(Tomplus @ 5.01.2017, 20:36:16 ) *
Wklejałeś kod zapytania do konsoli w PMA?


Tak, wtedy normalnie tworzy tabelę
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Zapytań DDL nie możesz używać w prepare. Bezpośrednio przez exec. Swoją drogą tu nawet nigdzie tego zapytania nie wykonujesz. I po co 2 try/catch?

Ten post edytował viking 5.01.2017, 20:49:18
Go to the top of the page
+Quote Post
Szagii
post
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 25.11.2016

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


Cytat(viking @ 5.01.2017, 20:48:02 ) *
Zapytań DDL nie możesz używać w prepare. Bezpośrednio przez exec. Swoją drogą tu nawet nigdzie tego zapytania nie wykonujesz. I po co 2 try/catch?


Prepere zamieniłem na query i wszystko działa.
Te drugie try i catch zrobiłem dla sprawdzenia jakie błędy wywali, o ile wywali, teraz je wywalę.
Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Nie chodzi żebyś je całkowicie wywalił tylko zastosował z głową. Najpierw lapiesz błąd połączenia, nawet jak wystąpił to lecisz dalej. Później znowu ten sam błąd wyświetlasz. Powinieneś stworzyć tabelkę w try i oddzielnie catch na błąd.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 19:25