Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je déboguer pourquoi la requête MySQL la plus simple renvoie false ?

Une mise à jour obligatoire :comme mysql ext n'est plus, voici les réponses pour les deux API MySQL restantes que j'ai écrites sur mon site sur la base de l'expérience acquise en répondant à des milliers de questions sur Stack Overflow :

En bref, pour mysqi la ligne suivante doit être ajoutée avant mysqli_connect() appeler :

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

tandis que pour PDO, le mode d'erreur approprié doit être défini, par exemple

$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

À partir de l'ancien poste mysql,

Pour obtenir une erreur de mysql_query() vous devez utiliser mysql_error() fonction.
Exécutez donc toujours toutes vos requêtes de cette manière, au moins jusqu'à ce que vous développiez un gestionnaire de requêtes plus avancé :

$query = "SELECT * FROM 'users'";
$result = mysql_query($query) or trigger_error(mysql_error()." ".$query);

le problème avec votre requête actuelle est 'users' partie. Les guillemets simples doivent être utilisés pour délimiter les chaînes tandis que pour les identifiants, vous devez utiliser des backticks :

SELECT * FROM `users`

Afin de voir ces erreurs lors du développement, ajoutez ces lignes en haut de votre code pour être sûr de voir toutes les erreurs survenues

ini_set('display_errors',1);
error_reporting(E_ALL);

sur le serveur de production, cependant, la valeur de la première ligne doit être changée de 1 à 0