• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Problem ze wstawieniem rekordu do bazy danych

VPS Starter Arubacloud
0 głosów
140 wizyt
pytanie zadane 21 stycznia 2018 w PHP przez Dexterim Dyskutant (8,370 p.)
zamknięte 21 stycznia 2018 przez Dexterim

Hejka, próbuje wrzucić nowy rekord do bazy danych ale wyrzuca mi taki wyjątek

 Error
PDOException: SQLSTATE[HY000]: General error: 14 unable to open database file in /var/www/html/proj2/appl/Auth.php:47 Stack trace: #0 /var/www/html/proj2/appl/Auth.php(47): PDOStatement->execute() #1 /var/www/html/proj2/soapServer.php(35): Auth->addNewUser('Zenek') #2 [internal function]: createUser('Zenek', '1234', 'Zenek') #3 /var/www/html/proj2/soapServer.php(52): SoapServer->handle() #4 {main}

Dumping request headers:
POST /proj2/soapServer.php HTTP/1.1
Host: localhost
Connection: Keep-Alive
User-Agent: PHP-SOAP/7.0.22-0ubuntu0.16.04.1
Content-Type: application/soap+xml; charset=utf-8; action="http://localhost/proj2#createUser"
Content-Length: 552


Dumping request:

Zenek1234Zenek

Dumping response headers:
HTTP/1.1 200 OK
Date: Sun, 21 Jan 2018 13:18:49 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Length: 989
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/soap+xml; charset=utf-8

Dumping response:

return<p> Error </p>PDOException: SQLSTATE[HY000]: General error: 14 unable to open database file in /var/www/html/proj2/appl/Auth.php:47
Stack trace:
#0 /var/www/html/proj2/appl/Auth.php(47): PDOStatement->execute()
#1 /var/www/html/proj2/soapServer.php(35): Auth->addNewUser('Zenek')
#2 [internal function]: createUser('Zenek', '1234', 'Zenek')
#3 /var/www/html/proj2/soapServer.php(52): SoapServer->handle()
#4 {main}

Prawa do bazy danych ma ustawione na 777 więc nie mogę znaleźć przyczyny. Czytanie mi działa i normalnie zwraca rekordy.

Nieszczęsna funkcja:

public function addNewUser($name)
    {
        /*$sth = self::$db->prepare("SELECT * FROM user");
        $sth->execute();
        $result = $sth->fetchAll();
        return $result;*/
        if($this->_user != '' && $this->_password != '')
        {
            try{
            $sth = self::$db->prepare("INSERT INTO user (name, login, password) VALUES('".$name."','".$this->_user."', '".$this->_password."')");
            $sth->execute();
            return '1';
          }catch(Exception $exc){
            return "<p> Error </p>".$exc;
          }
        }
        return "Wrong user or pass";
    }

 

komentarz zamknięcia: folder też musi mieć prawa do zapisu....
komentarz 21 stycznia 2018 przez Assasz Nałogowiec (30,460 p.)
Co to za funkcja createUser? Poza tym po co preparujesz zapytania, skoro i tak nie korzystasz z bindowania wartości.
komentarz 21 stycznia 2018 przez Dexterim Dyskutant (8,370 p.)

Poprawiłem to na tak ale nadal błąd

public function addNewUser($name)
    {
        /*$sth = self::$db->prepare("SELECT * FROM user");
        $sth->execute();
        $result = $sth->fetchAll();
        return $result;*/
        if($this->_user != '' && $this->_password != '')
        {
            try{
            $sth = self::$db->prepare("INSERT INTO user (name, login, password) VALUES(:name, :login, :password)");
            $sth->bindValue(':name',$name,PDO::PARAM_STR);
            $sth->bindValue(':login',$this->_user,PDO::PARAM_STR);
            $sth->bindValue(':password',$this->_password,PDO::PARAM_STR);
            $resp = ( $sth->execute() ? 'true' : 'false' ) ;
            return $resp ;
          }catch(Exception $exc){
            return "<p> Error </p>".$exc;
          }
        }
        return "Wrong user or pass";
    }

CreateUser to funkcja zarejestrowana na serwerze 

  if(isset($_POST['login']) && isset($_POST['pass']) && isset($_POST['create']) && isset($_POST['name']))
      {
        try{
            $login = htmlentities($_POST['login'], ENT_QUOTES, "UTF-8");
            $password = htmlentities($_POST['pass'], ENT_QUOTES, "UTF-8");
            $name = htmlentities($_POST['name'], ENT_QUOTES, "UTF-8");
            $respond = $client->__soapCall("createUser",array("user"=>$login, "password"=>$password, "name"=>$name) );
            echo $respond;
       
        }catch(Exception $exc){
            echo "<p> Error </p>".$exc;
        }
      }

funkcja addNewUser jest metoda klasy do obsługi bazy danych

komentarz 21 stycznia 2018 przez Dexterim Dyskutant (8,370 p.)
Problem rozwiązany jakims cudem folder też musi mieć prawa do zapisu....
1
komentarz 21 stycznia 2018 przez Assasz Nałogowiec (30,460 p.)
No tak :)
komentarz 21 stycznia 2018 przez Dexterim Dyskutant (8,370 p.)
w sumie i tak dzieki za pomoc :)

Podobne pytania

0 głosów
1 odpowiedź 327 wizyt
pytanie zadane 5 lipca 2018 w C# przez Cacu003 Początkujący (260 p.)
0 głosów
1 odpowiedź 194 wizyt
pytanie zadane 23 czerwca 2015 w C i C++ przez Linker Bywalec (2,690 p.)
0 głosów
1 odpowiedź 304 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...