2012-09-01 14 views
21

En PHP, estoy tratando de ejecutar una consulta larga de MySql que depende de la entrada del usuario. Sin embargo, mi consulta falla con el siguiente mensaje,cómo mostrar el error de MySql en php

"Query Failed". 

De hecho, he impreso este mensaje cuando falla la consulta pero estoy teniendo dificultades para buscar la razón de este fracaso. Lamentablemente, no pude encontrarlo porque el error no está especificado en la página web. Mi pregunta es, ¿hay alguna manera de mostrar el mensaje de error que causó la falla en la página web? Gracias.

Aquí está mi código,

$from= "Findings"; 
    $where=""; 

    if($service!= null) 
    { 

     $from = $from . ", ServiceType_Lookup"; 
     $where= "Findings.ServiceType_ID= ServiceType_Lookup.ServiceType_ID AND ServiceType_Name= ". $service; 

     if($keyword!= null) 
     $where= $where . " AND "; 

    } 

    if($keyword != null) 
    { 

    $where= $where . "Finding_ID LIKE '%$keyword%' OR 
         ServiceType_ID LIKE '%$keyword%' OR 
         Title LIKE '%$keyword%' OR 
         RootCause_ID LIKE '%$keyword%' OR 
         RiskRating_ID LIKE '%$keyword%' OR 
         Impact_ID LIKE '%$keyword%' OR 
         Efforts_ID LIKE '%$keyword%' OR 
         Likelihood_ID LIKE '%$keyword%' OR 
         Finding LIKE '%$keyword%' OR 
         Implication LIKE '%$keyword%' OR 
         Recommendation LIKE '%$keyword%' OR 
         Report_ID LIKE '%$keyword%'"; 
    } 


    $query = "SELECT Finding_ID, 
         ServiceType_ID, 
         Title, 
         RootCause_ID, 
         RiskRating_ID, 
         Impact_ID, 
         Efforts_ID, 
         Likelihood_ID, 
         Finding, 
         Implication, 
         Recommendation, 
         Report_ID FROM ".$from . " WHERE " . $where; 




    echo "wala 2eshiq";    


    $this->result = $this->db_link->query($query); 
    if (!$this->result) { 


printf("Query failed: %s\n", mysqli_connect_error()); 
exit;       
    } 

    $r = mysqli_query($this->db_link, $query); 
    if($r==false) 
    printf("error: %s\n", mysqli_errno($this->db_link)); 
+1

Puede simplemente usar: '$ this-> db_link-> error' para obtener el último mensaje de error. Para todos los errores use '$ this-> db_link-> error_list'. – hakre

Respuesta

25

Utilice esta:

mysqli_query($this->db_link, $query) or die(mysqli_error($this->db_link)); 
# mysqli_query($link,$query) returns 0 if there's an error. 
# mysqli_error($link) returns a string with the last error message 

También puede utilizar esta opción para imprimir el código de error.

echo mysqli_errno($this->db_link); 

Tome una mirada here y here

+0

funcionó .. gracias. –

8

función de uso die()

or die(mysql_error()); 
+12

Está usando 'mysqli_ *', intenta no indicarle que use 'mysql_ *'. – David

1
mysql_query("YOUR QUERY") OR die("Error:".mysql_error()); 
+2

Está usando 'mysqli_query'. Es irresponsable sugerir que retroceda a 'mysql_query'. – David

+0

Bien, entiendo tu punto. Gracias David. –

1

las sugerencias DOTn trabajo, ya que son para el conductor MySQL estándar, no para mysqli,

$this->db_link->error contiene el error Si uno lo hizo ocurrieron

o

mysqli_error($this->db_link) 

funcionará

4

utilizo el siguiente para convertir todo informe de errores para MySQLi

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 

* NOTA: no utilice esto en un entorno de producción.

0

intentar algo así como que:

$link = @new mysqli($this->host, $this->user, $this->pass) 
$statement = $link->prepare($sqlStatement); 
       if(!$statement) 
       { 
        $this->debug_mode('query', 'error', '#Query Failed<br/>'.$link->error); 
        return false; 
       } 
0

Una línea útil de código para usted sería

$sql = "Your SQL statement here"; 
$result = mysqli_query($sql) or trigger_error("Query Failed! SQL: $sql - Error: ".mysqli_error(), E_USER_ERROR); 

Este método es mejor que morir porque se puede utilizar para el desarrollo y la producción, que es la solución permanente.

Cuestiones relacionadas