Avatar billede simplus Nybegynder
27. januar 2007 - 21:39 Der er 12 kommentarer og
1 løsning

Forbindelse til MySQL via POST værdier

Jeg er igang med at lave en install fil i php, den skal oprette 4 tabeller i en database. For at gøre det skal brugeren jo connecte til sin MySQL database. Til det skal jeg have lavet en formular som connecter til Mysql og hvis den ikke kunne forbinde så skal den _KUN_ komme med en tekst fejl og ikke de dersens mysql_error fejl. Det med at den skal lave 4 tabeller har jeg selv lavet og det virker, men at connecte til Mysql virker desværre ikke som forventet. Den udskriver nemlig altid en mysql_error samtidigt med min tekst fejl!

Her er koden jeg bruger:

        $forbindmysql = mysql_connect($host,$user,$pass);
        $forbinddb = mysql_select_db($db);
        if (!$forbindmysql || !$forbinddb) {
            die('Kunne ikke forbinde.');
        }else{
            die('Forbundet succesfuldt.');
        }
Avatar billede mcgoat Nybegynder
27. januar 2007 - 21:42 #1
$forbindmysql = mysql_connect($host,$user,$pass) or die("Der kunne ikke forbindes til databasen du har skrevet, prøv venligt igen");

noget ala det?
Avatar billede simplus Nybegynder
27. januar 2007 - 21:45 #2
Ja, men det giver stadig samme fejl, den udskriver altså stadig en mysql_error
Avatar billede mcgoat Nybegynder
27. januar 2007 - 21:48 #3
er lige ved at prøve det på min egen server. skriver lige hvis jeg finder ud af noget
Avatar billede simplus Nybegynder
27. januar 2007 - 21:51 #4
Det lyder rigtig fint :-)
Avatar billede mcgoat Nybegynder
27. januar 2007 - 21:51 #5
vil tro du skal sætte noget

<?php

// Turn off all error reporting
error_reporting(0);

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);

// Report all PHP errors (bitwise 63 may be used in PHP 3)
error_reporting(E_ALL);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>
Avatar billede simplus Nybegynder
27. januar 2007 - 21:56 #6
jeg har kun brugt error_reporting(0); og ikke de andre, det er nemlig kun en fil jeg skal bruge det på, og den slettes alligevel efter man har brugt den.

kan det bruges i alle php versioner?

... nå men altså det virker:

<?php
error_reporting(0);

    if (isset($_POST['skjultfelt'])) {

            $host = $_POST['hostname'];
            $user = $_POST['username'];
            $pass = $_POST['password'];
            $db = $_POST['database'];

        $forbindmysql = mysql_connect($host,$user,$pass) or die("Kunne ikke forbinde");
        $forbinddb = mysql_select_db($db) or die("Kunne ikke forbinde");
        if (!$forbindmysql || !$forbinddb) {
            die('Kunne ikke forbinde.');
        }else{
            die('Forbundet succesfuldt.');
        }

    }
?>


<h3>Indtast oplysninger til MySQL forbindelse</h3>

<form action="" method="POST">
    <table border="0" cellspacing="0" cellpadding="3">
      <tr>
    <td>Hostname:</td>
    <td><input type="text" name="hostname" class="textinput"> (Ofte localhost)</td>
      </tr>

      <tr>
    <td>Brugernavn:</td>
    <td><input type="text" name="username" class="textinput"></td>
      </tr>

      <tr>
    <td>Password:</td>
    <td><input type="text" name="password" class="textinput"></td>
      </tr>

      <tr>
    <td>Database navn:</td>
    <td><input type="text" name="database" class="textinput"></td>
      </tr>

      <tr>
    <td>&nbsp;</td>
    <td><input name="make" type="image" src="gbog/img/login.PNG" alt="Login" title="Login"></td>
      </tr>
    </table>
<input type="hidden" name="skjultfelt" value="brugesikke">
</form>

så det er helt fint..

læg venligst et svar
Avatar billede terrak Nybegynder
27. januar 2007 - 21:57 #7
Eller også smider du et @ foran den funktion der ikke skal returnere en fejlkode:
@mysql_connect()
Avatar billede mcgoat Nybegynder
27. januar 2007 - 21:58 #8
du kan nok sætte error_reporting til 0 i starten af filen, og sætte den tilbage i slutningen :)
Avatar billede simplus Nybegynder
27. januar 2007 - 22:02 #9
smart terrak!

hvilken er bedst at bruge egentlig?
error_reporting(0);
eller
@ foran min mysql_connect();
Avatar billede terrak Nybegynder
27. januar 2007 - 22:37 #10
error_reporting(0)
slår alle fejl fra. Det vil sige at hvis du har en fejl et andet sted i koden, som ikke skyldes din mysql_connect(), skal du slå det til, uploade filen, læse og rette fejlen for derefter at uploade en gang til.
@mysql_connect()
er mere målrettet og vil derfor spare dig for dette besvær.

Og så skal det også lige nævnes at ved større sites hvor sikkerheden SKAL være i top, skal alle PHP-genererede fejlmeddelelser slås fra, så evt. ondsindede brugere ikke kan få information om hvad du bl.a. kalder dine variabler.
Avatar billede simplus Nybegynder
27. januar 2007 - 22:51 #11
Det må jeg virkelig sige, tusinde tak for info! Det havde jeg slet ikke tænkt på!
Avatar billede terrak Nybegynder
27. januar 2007 - 22:58 #12
Lidt videre læsning til dem der skulle være interesseret :-)
Specielt kommentarene fra andre brugere omkring @include() er god viden at have.

http://dk2.php.net/error_reporting
http://dk2.php.net/manual/da/language.operators.errorcontrol.php
Avatar billede simplus Nybegynder
27. januar 2007 - 23:09 #13
Brugbart, helt sikkert brugbart...
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