sql >> Databáze >  >> RDS >> Mysql

Jak mohu odladit, proč nejjednodušší dotaz MySQL vrací false?

Povinná aktualizace :protože mysql ext již není, zde jsou odpovědi na dvě zbývající MySQL API, která jsem napsal na svém webu na základě zkušeností z odpovědí na tisíce otázek na Stack Overflow:

Stručně řečeno, pro mysqi musí být následující řádek přidán před mysqli_connect() zavolejte:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

zatímco pro PDO musí být nastaven správný chybový režim, například

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

Od starého mysql ext,

Chcete-li získat chybu z mysql_query() musíte použít mysql_error() funkce.
Takže vždy spouštějte všechny své dotazy tímto způsobem, alespoň dokud nevyvinete pokročilejší obslužný program dotazů:

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

problém s vaším aktuálním dotazem je 'users' část. K oddělování řetězců je třeba použít jednoduché uvozovky, zatímco pro identifikátory musíte použít zpětné zaškrtnutí:

SELECT * FROM `users`

Chcete-li vidět tyto chyby během vývoje, přidejte tyto řádky na začátek kódu, abyste měli jistotu, že uvidíte každou chybu, která se vyskytla

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

na produkčním serveru by se však hodnota na prvním řádku měla změnit z 1 na 0



  1. Přestaňte MySQL tolerovat více hodnot NULL v rámci UNIKÁTNÍHO omezení

  2. MySQL Auto Increment Custom Values

  3. Nainstalujte Postgres.app na Mac

  4. Správa uživatelských účtů, role, oprávnění, autentizace PHP a MySQL - 2. část