Avatar billede fangel Nybegynder
08. marts 2003 - 15:45 Der er 5 kommentarer og
1 løsning

mysql_error...

Hej

jeg har normalt bare brugt

mysql_query("et query")or die(mysql_error());

til at lave et database kald, men nu er jeg igang med at udvide mit output control...

SÅ, jeg er igang med at lave en function (doQuery()) til at lave mine query, som så skal lave de fornødne ting, hvis noget går galt...

function doQuery($sqlStr, $return = false){
  checkConnection(); //en funktion der tjekker om database er åbnet
  if($return == false){
    mysql_query($sqlStr);
  }
  else{
    return mysql_query($sqlStr);
  }
}

her kommer der som ikke går så godt...

HVIS et at kaldene går galt, så skal der ske følgende:

$error = true; // variablen $error skal have indholdet true
$errorTxt = "MySQL: " . mysql_error();
  // variablen $errorTxt skal have indholdet "MySQL:" plus indholdet af mysql_error()...

MEN, det kan jeg ikke få den til... jeg har prøvet lidt forskelligt, men jeg kan ikke lige umdibart få det til at lykkedes...

så en eller anden, jeg tåger, så hjælp mig lige... ved ikke hvorfor det ikke vil sådan som jeg vil...

Morten
Avatar billede rzj Nybegynder
08. marts 2003 - 16:10 #1
Jeg tror ikke jeg forstår dit spg. helt, men måske du kan bruge dette. Det er nogle mysql abstraktioner jeg gennem laaaaang tid har anvendt med fornøjelse. Nu er jeg dog gået over til PEAR...


$dbhost = "xxxxxxxx";
$dbname = "xxxxxxxxx";
$dbuser = "xxxxxxxx";
$dbpass = "xxxxxxx";
function db_connect() {
  global $dbhost, $dbname, $dbuser, $dbpass;

  mysql_connect($dbhost, $dbuser, $dbpass) or
    sql_error("Kunne ikke oprette en forbindelse til MySQL.", mysql_errno(), mysql_error());
 
  mysql_select_db($dbname) or
    sql_error("Kunne ikke vælge databasen: $dbname", mysql_errno(), mysql_error());
 

}

# Foretager en forespørgsel til mySQL.
function getData($query) {
 
  db_connect();
  $resultat = mysql_query($query) or
    sql_error("Kunne ikke udføre: <em>$query</em><br>", mysql_errno(), mysql_error());
 
     
    while($raekke = mysql_fetch_array($resultat)) {
            $resultat_array[] = $raekke;
      }
        db_close();
        if(!isset($resultat_array)){
            return 0;
        } else {
            return $resultat_array;
        }
}

function putData($query) {
    db_connect();
      $resultat = mysql_query($query) or
      sql_error("Kunne ikke udføre: <em>$query</em>", mysql_errno(),mysql_error());
    db_close();
  if(!$resultat) {
      return 0;
  }
      return 1;
}


# Lukker forbindelsen til mySQL - fejlbehandler
function db_close() {
  mysql_close() or
    sql_error("Kunne ikke lukke forbindelsen til MySQL!", mysql_errno(), mysql_error());
 
}
Avatar billede fangel Nybegynder
08. marts 2003 - 16:13 #2
rzj => ikke koden, men den gav mig en ide... så jeg vender tilbage om 3.7sek når jeg har testet min ide...
Avatar billede rzj Nybegynder
08. marts 2003 - 16:16 #3
du skal selvfølgeligt lige også bruge sql_error() som ser sådan ud:

$top_html =  "";
$prefix = "<h5>Der opstod en fejl!</h5><ul type=\"square\">";
$error_txt = "</ul>
        <a href=\"java script:history.back()\">Gå tilbage.</a>";
$bottom_html = "";

function sql_error($msg, $errnum, $errtxt){
    global $top_html, $prefix, $error_txt, $bottom_html;
    $msg = $prefix."<li><p class=\"sub\">".$msg;
    echo $top_html.$msg."<li>".$errnum.": ".$errtxt.$error_txt.$bottom_html;
    exit;
}

læg iøvrigt mærke til at en query pakkes ind i endnu et array. Det er noget der har hængt ved, men som du selvfølgeligt kan lave om. Det smarte er dog at det giver mulighed for at anvende extract() funktionen istedet for at skulle tildele resultat-arrayet variable.
Eksempel på en forespørgsel:
require_once("mysql.php");
$sql = "SELECT * FROM dinTabel";
$result = getData($sql);
for($i=0;$i<count($result);$i++){
extract($result[$i]);

//Nu er vars det samme som kolonneoverskrift i tabel
echo $id;
echo $first_column;
echo $second_column;

}

/raz
Avatar billede fangel Nybegynder
08. marts 2003 - 16:26 #4
jeg løste det sådan her:

function doQuery($sqlStr, $return = false){
  checkConnection();
  if($return = false){
    mysql_query($sqlStr)or mysqlShowError();
  }
  else{
    $query = mysql_query($sqlStr)or mysqlShowError();
  }
}
function mysqlShowError(){
  ob_clean();
  $errorTxt = "MySQL Error<br>Error message: " . mysql_error();
  echo obShowError($errorTxt);
  exit;
}

løsningen er inspiret af dit script, så lægger du et svar, så for du point for inspirationen...

Morten
Avatar billede rzj Nybegynder
08. marts 2003 - 16:32 #5
ok
Avatar billede fangel Nybegynder
08. marts 2003 - 16:36 #6
så _her_
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