2012-09-01 51 views
21

Trong PHP, tôi đang cố gắng thực hiện truy vấn MySql dài phụ thuộc vào đầu vào của người dùng. Tuy nhiên, câu hỏi của tôi không thành công với thông báo sau,làm thế nào để hiển thị lỗi MySql trong php

"Query Failed". 

Thật sự tôi đã in thông điệp này bất cứ khi nào truy vấn thất bại nhưng tôi đang gặp khó khăn tìm kiếm các lý do đằng sau sự thất bại này. Thật không may, tôi không thể tìm thấy nó vì lỗi không được chỉ định trên trang web. Câu hỏi của tôi là, có cách nào để hiển thị thông báo lỗi gây ra lỗi trên trang web không. Cảm ơn bạn.

Dưới đây là mã của tôi,

$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

Bạn chỉ có thể sử dụng: '$ this-> db_link-> error' để nhận thông báo lỗi cuối cùng. Đối với tất cả các lỗi sử dụng '$ this-> db_link-> error_list'. – hakre

Trả lời

25

Sử dụng này:

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 

Bạn cũng có thể sử dụng để in các mã lỗi.

echo mysqli_errno($this->db_link); 

Hãy xem herehere

+0

nó đã hoạt động ... cảm ơn bạn. –

8

chức năng sử dụng die()

or die(mysql_error()); 
+12

Anh ấy đang sử dụng 'mysqli_ *', cố gắng không hướng dẫn anh ta sử dụng 'mysql_ *'. – David

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

Anh ấy đang sử dụng 'mysqli_query'. Đó là vô trách nhiệm để đề nghị rằng ông thoái lui để 'mysql_query'. – David

+0

Được rồi, tôi hiểu ý của bạn. Cảm ơn David. –

1

các sugestions dotn công việc vì họ là dành cho các tài xế mysql tiêu chuẩn, không cho mysqli,

$this->db_link->error chứa lỗi nếu một đã xảy ra

hoặc

mysqli_error($this->db_link) 

sẽ làm việc

4

tôi sử dụng những điều sau để biến tất cả lỗi báo cáo tình hình cho MySQLi

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 

* Chú ý: không sử dụng điều này trong một môi trường sản xuất.

0

Hãy thử một cái gì đó như thế:

$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

Một dòng hữu ích của mã cho bạn sẽ là

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

Phương pháp này là tốt hơn so với chết vì bạn có thể sử dụng nó để phát triển và sản xuất, đó là giải pháp lâu dài.

Các vấn đề liên quan