En PHP, j'essaie d'exécuter une longue requête MySQL qui dépend de l'entrée de l'utilisateur. Cependant, ma requête échoue avec le message suivant,
"Query Failed".
En fait, j'ai imprimé ce message chaque fois que la requête échoue, mais j'ai du mal à rechercher la raison de cet échec. Malheureusement, je ne l'ai pas trouvé car l'erreur n'est pas spécifiée sur la page Web. Existe-t-il un moyen d'afficher le message d'erreur à l'origine de l'échec sur la page Web?
Voici mon code,
$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));
Utilisez ceci:
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
Vous pouvez également l'utiliser pour imprimer le code d'erreur.
echo mysqli_errno($this->db_link);
Utilisez la fonction die () :
or die(mysql_error());
J'utilise ce qui suit pour activer tous les rapports d'erreurs pour MySQLi
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
* NOTE: ne l'utilisez pas dans un environnement de production.
mysql_query("YOUR QUERY") OR die("Error:".mysql_error());
Les suggestions ne fonctionnent pas car elles concernent le pilote MySQL standard, pas pour mysqli:
$this->db_link->error
contient l'erreur si une s'est produite
Ou
mysqli_error($this->db_link)
marchera.
Essayez quelque chose comme ceci:
$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;
}