Avatar billede Slettet bruger
08. maj 2006 - 03:25 Der er 9 kommentarer og
1 løsning

Hvad har jeg mon glemt?

Jeg får denne fejl "Query was empty
Hele strengen: "

Scriptet ser sådan her ud, men jeg fik slettet noget, men nu kan jeg ikke huske hvad :)

<?php
class db {
        var $query;
        var $result;


        function db() {

        }

        function db_connect() {
                $this->host = "xxx";
                $this->user = "xxx";
                $this->pwd = "xxx";
                $this->db = "xxx";
                $this->query =  @mysql_query($sql);
                if(@mysql_error() != "") {
                        echo mysql_error()."<br><b>Hele strengen:</b> ".$sql;
                        exit;
                }
Avatar billede nielle Nybegynder
08. maj 2006 - 06:54 #1
Du har jo ikke nogen værdi i $sql, og derfor fejler denne:

$this->query = @mysql_query($sql);

Men det er vel heller ikke meningen at $sql-kadet skal udføres inde i din db_connect() funktion?
Avatar billede Slettet bruger
08. maj 2006 - 07:10 #2
Jo det er meningen
Avatar billede Slettet bruger
08. maj 2006 - 07:13 #3
Denne fil som der fejler burde stå for alt kommunikation med databasen og sørge for at der kommer og informationer ind og ud vil jeg tro?
Avatar billede drbean Nybegynder
08. maj 2006 - 08:34 #4
Hmmm.... nej ikke helt. Den $sql er tom, og det må den ikke være sådan som du har lavet den. Jeg ville nok overveje at lave noget i denne her stil:

class CMySQL
{
    var $Database;
    var $rQueryResult;
   
    function CMySQL($sDatabase = '', $sServer = 'localhost',  $sUsername = 'root', $sPassword = '')
    {
   
            $this->Database = mysql_connect($sServer, $sUsername, $sPassword);
               
            if($this->Database === FALSE) 
            {
                die('Fejl i oprettelse af forbindelse til SQL databasen.<br />'. mysql_error());
            }   
           
            $db_selected = mysql_select_db($sDatabase, $this->Database);
            if (!$db_selected) {
              die ('Kan ikke vælge database : ' . mysql_error());
            }

               
           
    }
   

    function Query($sQuery)
    {
        $this->rQueryResult = mysql_query($sQuery, $this->Database);
        if($this->rQueryResult === FALSE) {
            die('Fejl i Query.<br />'. mysql_error()."<br />".$sQuery);
        }
    }


    function Fetch()
    {
        return mysql_fetch_assoc($this->rQueryResult);
    }

}

Når du så opretter dit objekt, giver du db, username, password og server med som paramter. Så opretter den forbindelsen til serveren. Når den er oprettet, kan du kalde din Query funktion.

Den måde som du har lavet det på, skal man lave en parameter på db_connect der hedder $sql, eller også skal du lave en funktion du kalder inden der hedder SetSQL og som sætter sql varialben.
Avatar billede nielle Nybegynder
08. maj 2006 - 11:22 #5
Hvis du skal bruge en SQL-sætning inde i din db_connect(), så skal du have den med i kaldet:

function db_connect($sql) {
    $this->host = "xxx";
    $this->user = "xxx";
    $this->pwd = "xxx";
    $this->db = "xxx";
    $this->query = @mysql_query($sql);
    if (@mysql_error() != "") {
        echo mysql_error()."<br><b>Hele strengen:</b> ".$sql;
        exit;
    }

Personlig synes jeg dog at det er en sammenblanding af de forskellige begreber, når du inkluder et SQL-kald i et metode-kald som (ud fra navnet at dømme) primært har til formål at forbinde til databasen. SQL-kaldet kommer normalt *efter* at der er forbundet til databasen.

Der er også en problemstilling omkring det at forbinde til databasen for hvert eneste SQL-kald - det koster simpelthen tid og performance; Man kan sagtens bruge en åben connection til at foretage mere end et SQL-kald:

Forbind til database.
SQL-kald nr. 1.
SQL-kald nr. 2.
SQL-kald nr. 3.
Luk forbindelse til database.

Dette er normalt mere effektivt end:

Forbind til database.
SQL-kald nr. 1.
Luk forbindelse til database.
Forbind til database.
SQL-kald nr. 2.
Luk forbindelse til database.
Forbind til database.
SQL-kald nr. 3.
Luk forbindelse til database.
Avatar billede Slettet bruger
09. maj 2006 - 19:06 #6
Jeg fik rettet det på anden vis, men tak for hjælpen, hvis i smider svar kan i begge få point.
Avatar billede nielle Nybegynder
09. maj 2006 - 19:12 #7
Svar :^)
Avatar billede drbean Nybegynder
09. maj 2006 - 19:33 #8
samler ikke på point...
Avatar billede nielle Nybegynder
01. juni 2006 - 22:10 #9
Husk nu at lukke her :^)
Avatar billede nielle Nybegynder
03. juni 2006 - 19:50 #10
Takker for point :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester