Avatar billede akki Nybegynder
14. maj 2005 - 11:39 Der er 1 kommentar

Kan ikke indsætte i min DB via pear

jeg kan af en eller anden grund ikke få mit script til at virke (indsætte data) og tænkte at nogen herinde måske kunne se fejlen.

DBCLASS.PHP

class connect{
   
    public $dbo;
   
    public function connect()
   
        {
            include("DB.php");
            //database forbindelsen
            //Her opretter vi forbindelsen, og laver en fejl tjek
            $dsn = "mssql://bil:bilbil@localhost/biludlejning";
            $this->dbo = DB::connect($dsn);
            if(DB::isError($dbo))
                print($dbo->getMessage());
        }
    public function indsaet($q)//denne funktion bruges til at køre insæt sætninger
    //print("asdasda");
    {
        if(!$result = $this->dbo->query($q))
            print("kunne ikke kører query");
    }   
       

min indsæt side.

<?
include("../dbclass.php");
$dataob = new connect;
if($_POST["submit"] == 1){
$row = $dataob->hentEn("select * from model where model_maerke ='".$_POST["maerke"]."' AND model_model ='".$_POST["model"]."'");
if($_POST["maerke"] == $row[1] ||$_POST["model"] == $row[2] )
    {
    header("location:ny_brand.php?er=1");
    }
else
    {
    $dataob->indsaet("insert into Model (model_maerke, model_model, model_udstyr, model_pris, model_passagere) values
    ('".$_POST["maerke"]."','".$_POST["model"]."', '".$_POST["udstyr"]."','".$_POST["pris"]."','".$_POST["pas"]."')");
    }
//unset($_POST["Nyfrugt"]);
$_POST["submit"] = 0;
}
header("location:ny_brand.php?er=2");
?>
Avatar billede barklund Nybegynder
14. maj 2005 - 13:00 #1
Får du nogle fejlmeddelelser? Bliver den fanget i nogle af dine fejlhandlere? Får du tomme rækker, ingen rækker, ekstra rækker? Lidt mere information er nødvendig :)

Dog, en smart ting med Pear DB er, at man kan have _en_ central errorhandler. Det plejer jeg at bruge. For eksempel som:

function db_error_handler($dbh) {
    print "<h1>Database fejl</h1><p>Prøv igen senere</p>";
    print "<p>".$dbh->getMessage()."<br/>".$dbh->getDebugInfo()."</p>";
    print "<!--".$dbh->getMessage()." - ".$dbh->getDebugInfo()."-->";
    exit;
}

Som du definerer udenfor din klasse. Inden i din klasse skrive du så:

$dbo->setErrorHandling(PEAR_ERROR_CALLBACK, 'db_error_handler');

Så vil du altså få en direkte besked, så snart du har en SQL-fejl - så skal du ikke håndtere det på den enkelte query.

--
Morten Barklund
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