Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL] Skrypt tworzący tabele
Forum PHP.pl > Forum > Przedszkole
Szagii
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ę! 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. ?>
Tomplus
Wklejałeś kod zapytania do konsoli w PMA?
Szagii
Cytat(Tomplus @ 5.01.2017, 20:36:16 ) *
Wklejałeś kod zapytania do konsoli w PMA?


Tak, wtedy normalnie tworzy tabelę
viking
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?
Szagii
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ę.
viking
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.
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.