В PHP я пытаюсь выполнить длинный запрос MySql, который зависит от ввода пользователя. Однако мой запрос завершился неудачей со следующим сообщением,
"Query Failed".
Фактически я печатал это сообщение всякий раз, когда запрос терпит неудачу, но мне трудно найти причину этого отказа. К сожалению, я не смог найти его, потому что ошибка не указана на веб-странице. Мой вопрос в том, есть ли способ показать сообщение об ошибке, вызвавшее сбой на веб-странице. Спасибо.
Вот мой код,
$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));
,$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));
Использовать это:
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
Вы также можете использовать это для печати кода ошибки.
echo mysqli_errno($this->db_link);
Взгляните сюда и здесь
функция функции die ()
or die(mysql_error());
Я использую следующее, чтобы включить все отчеты об ошибках для MySQLi
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
* ПРИМЕЧАНИЕ. Не используйте это в рабочей среде.
sugestions dotn работают, потому что они предназначены для стандартного драйвера mysql, а не для mysqli,
$this->db_link->error
содержит ошибку, если она произошла
или
mysqli_error($this->db_link)
будет работать
mysql_query("YOUR QUERY") OR die("Error:".mysql_error());
Попробуйте что-то вроде этого:
$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; }
Одна полезная строка кода для вас была бы
$sql = "Your SQL statement here"; $result = mysqli_query($sql) or trigger_error("Query Failed! SQL: $sql - Error: ".mysqli_error(), E_USER_ERROR);
Этот метод лучше, чем умереть, потому что вы можете использовать его для разработки и производства, это постоянное решение.