sql >> Database teknologi >  >> RDS >> Mysql

Få adgang nægtet fejl ved udførelse af mysql_query i php

Sidste opdatering:

Jeg åbnede en chatsession med Aditii, og vi lavede nogle fejlretninger der.

Som det viser sig, var problemet, at hun havde opgraderet fra en server, som havde korte tags aktiveret til en, der ikke gjorde det. Som et resultat blev al hendes kode, der var omgivet af korte tags, ikke udført, og dette inkluderede hendes konfigurationsfil.

Fejlen i spørgsmålet skyldtes mysql_connect() funktion blev ikke udført, fordi hele filen ikke blev udført. En mysql_query() opkald, der var afhængig af den forbindelse, mislykkedes på grund af dette.

Efter at have rettet hendes korte tags til at bruge den fulde <?php tag, den fil blev udført. Som diskuteret i mit oprindelige svar på dette spørgsmål, er de enkelte anførselstegn omkring variablerne, der sendes til mysql_connect() endte med at skabe problemer. Efter at have informeret om, at de enkelte citater skulle fjernes, lykkedes forbindelsen, og problemet blev løst.

Hele fejlfindingssessionen, for alle interesserede parter, kan findes her .

Første opdatering:

Efter at have kigget lidt nærmere på dette, er der to stykker, der ikke passer til mit oprindelige svar (som jeg har gemt i bunden af ​​dette svar, da det stadig har nogle gode oplysninger).

For det første udløses fejlen af ​​mysql_query() ikke mysql_connect() . Dette skyldes sandsynligvis, at der ikke er nogen fejlhåndtering omkring forbindelsen, så fejlen bliver først bemærket senere. Prøv at tilføje noget fejlhåndtering omkring forbindelsen:

if (!($con = mysql_connect('$localhost','$username','$password'))) {
  echo mysql_error();
}

if (!mysql_select_db('$dbname',$con)) {
  echo mysql_error();
}

I ovenstående vil fejl blive vist, så snart fejlen opstår.

Den anden ting, jeg ser, er, at du opretter forbindelse til localhost med ODBC bruger. Dette giver ingen mening hvis fejlen udløses af den forbindelseskode, du har vist ovenfor. Enten vil du logge på med en bruger kaldet $username hvis dit problem er problemet med enkelt citat, forklarer jeg nedenfor, eller root hvis du ikke er det.

Det ser ud til, at PHP forsøger at oprette forbindelse til standardoplysningerne for din PHP-opsætning (findes i din php.ini fil), i stedet for de legitimationsoplysninger, du har angivet. Dette får mig til at tro, at de linjer, du viser os, faktisk ikke er de linjer, der udføres. Er du sikker på, at du ikke forsøger at oprette forbindelse andre steder i din kode? Hvis du er, formoder jeg, at din fejl ligger i den del af koden.

Det er også muligt (jeg bliver nødt til at tjekke), når du forsøger at køre mysql_query() mod en nulforbindelse, forsøger PHP måske at oprette en forbindelse til dig. Det ville jeg dog ikke regne med.

Jeg foreslår, at du prøver at køre den opdaterede kode, jeg har angivet ovenfor, som bruger mysql_error() funktion til at vise fejl, når de opstår. Du kan endda tilføje noget echo dine egne udsagn i de blokke, til noget god gammeldags printf debugging.

Oprindeligt svar:

Problemet er, at du pakker dine variable ind i enkelte anførselstegn. Hvis du pakker dem ind i enkelte anførselstegn, evaluerer PHP ikke variablen til værdien. For eksempel i stedet for at sende root som det andet argument sender du $username . I sidste ende forsøger du at logge ind på en server kaldet $localhost med en bruger kaldet $username med adgangskoden $password .

Tag et kig på PHP-dokumentationssiden for Strings . Det forklarer dette:

Hvis du vil bruge variabler inde i en streng, skal du bruge dobbelt citater, ikke enkeltstående. I dette tilfælde behøver du dog slet ikke at pakke disse variable ind i anførselstegn, fordi deres værdier allerede er strenge. Du kan bare videregive variablen helt af sig selv. Prøv dette:

$con=mysql_connect($localhost, $username, $password);
mysql_select_db($dbname, $con);


  1. Oracle LIMIT n,m ækvivalent

  2. Oracle 11g Express Edition til Windows 64bit?

  3. Hvordan indsætter man en CSV-fildata i MYSQL ved hjælp af Python effektivt?

  4. Har mysql det, der svarer til Oracles analytiske funktioner?