• 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

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
118 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,490 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,490 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ź 299 wizyt
pytanie zadane 5 lipca 2018 w C# przez Cacu003 Początkujący (260 p.)
0 głosów
1 odpowiedź 135 wizyt
pytanie zadane 23 czerwca 2015 w C i C++ przez Linker Bywalec (2,690 p.)
0 głosów
1 odpowiedź 265 wizyt

90,852 zapytań

139,522 odpowiedzi

313,710 komentarzy

60,336 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...