Meddelande

Minska
No announcement yet.

Databas class med mysqli

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Databas class med mysqli

    Hej

    Jag försöker bygga en bra databas class med mysqli och har redan kört fast

    PHP-kod:
    class dbops {
        static 
    $connect;
        
        public function 
    __construct() {
            
            if(
    self::$connect===FALSE){
                
    self::$connect=new mysqli(DBHOST,DBUSER,DBPASSW,DBASE)or die("Kan inte ansluta");
                
            }
            
            if(
    self::$connect->connect_error()){
                die(
    "Får ej kontakt med databasen");
                    
            }
                    

    Konstanterna ligger i en include php som jag tar in med require_once och det verkar funka.
    If satsen vill inte hänga med alls. Jag vill att den skall kolla om en länk är etablerad till databasen och om inte, sätta upp en ny.

    Får bara en blank sida när jag instansierar denna class, inte något felmeddelande alls trots att jag har satt in E.ALL i PHP ini

    Visst är det så att om jag skulle skapa 2 instanser i ett script jag kör så skulle det skapa två länkar till databasen?
    Last edited by Jester73; 2015-06-12, 12:54.
    Med vänlig hälsning

    Clownen

  • #2
    För att få till så att felmeddelanden visas så ska error_reporting vara satt till E_ALL (inte E.ALL som du har skrivit), du behöver dessutom sätta display_errors till On i php.ini. Har du gjort det?
    Efter ändringar i php.ini måste du starta om webbservern.

    Angående din kod:
    I den kod du visar här så saknas ett }-tecken. Du avslutar aldrig funktionen.

    Om du skapar två instanser av dbops så kommer det bara att skapas en länk till databasen eftersom du använder en statisk medlemsvariabel för att hålla reda på databaslänken. Vill du att varje instans av dbops ska ha en egen länk kan du inte använda static.

    Din första if-sats kommer inte att uppfyllas eftersom du inte sätter $connect till false någonstans. Innan den är definierad har den värdet null.

    Din andra if-sats genererar ett felmeddelande eftersom connect_error är en variabel, inte en funktion. Ta bort parenteserna.
    http://php.net/manual/en/mysqli.connect-error.php
    Last edited by metalboy; 2015-06-17, 11:53.
    "Det finns tre sorters lögn; vanlig lögn, förbannand lögn och statistik" - Mark Twain

    Kommentera


    • #3
      Tack, nu funkar det nästan
      Hade satt E_ALL, hade bara glömt att det var _ istället för . när jag skrev texten
      och } berodde på att jag klippte exemplet lite kort.

      Några följdfrågor av nyfikenhet.
      Visst är det så att jag kan använda self::$connect i alla funktioner i classen?

      Varför 3 st =, trodde att det räckte med 2? Har inte hittat någon svar ute på nätet
      Med vänlig hälsning

      Clownen

      Kommentera


      • #4
        === är strikt jämförelse, dvs utan type casting.

        0 konverteras till false vid jämförelse med ==, men inte med ===, då är det fortfarande talet 0.

        Alltså:

        0 == false
        0 !=== false
        Avundas aldrig någon det sken av lycka han har för du känner inte hans hemliga sorger.

        Kommentera


        • #5
          Tackar, har plöjt en hel del PHP böcker m.m och aldrig stött på detta
          Med vänlig hälsning

          Clownen

          Kommentera


          • #6
            Det är användbart när en funktion kan returnera 0 som ett korrekt vid framgång och false vid trubbel, såsom strpos(). Den returnerar 0 om man hittar nålen på position 0 i höstacken. Om man kör if(strpos("hejsan", "hej")) så evaluerar det till false, men om man kör if(strpos("hejsan", "hej") !=== false) så evaluerar det true.
            Avundas aldrig någon det sken av lycka han har för du känner inte hans hemliga sorger.

            Kommentera


            • #7
              Jester73 skrev: Visa inlägg
              Visst är det så att jag kan använda self::$connect i alla funktioner i classen?
              Korrekt
              "Det finns tre sorters lögn; vanlig lögn, förbannand lögn och statistik" - Mark Twain

              Kommentera

              Working...
              X