sql >> Database >  >> RDS >> Mysql

Fout bij het verkrijgen van toegang geweigerd bij het uitvoeren van mysql_query in php

Laatste update:

Ik opende een chatsessie met Aditii en we hebben daar wat debuggen gedaan.

Het bleek dat het probleem was dat ze een upgrade had uitgevoerd van een server waarop korte tags waren ingeschakeld naar een server die dat niet deed. Als gevolg hiervan werd al haar code die was ingesloten in korte tags niet uitgevoerd, inclusief haar configuratiebestand.

De fout in de vraag was te wijten aan de mysql_connect() functie niet uitgevoerd omdat dat hele bestand niet werd uitgevoerd. Een mysql_query() oproep die op die verbinding vertrouwde, is hierdoor mislukt.

Na het corrigeren van haar korte tags om de volledige <?php . te gebruiken tag, dat bestand wordt uitgevoerd. Zoals besproken in mijn oorspronkelijke antwoord op deze vraag, worden de enkele aanhalingstekens rond de variabelen doorgegeven aan mysql_connect() leverde uiteindelijk problemen op. Na het advies om die enkele aanhalingstekens te verwijderen, is de verbinding gelukt en is het probleem opgelost.

De hele debugging-sessie, voor alle geïnteresseerden, is hier te vinden .

Eerste update:

Na hier wat beter naar te hebben gekeken, zijn er twee stukken die niet passen in mijn oorspronkelijke antwoord (die ik onderaan dit antwoord heb bewaard, omdat er nog steeds goede informatie in staat).

Ten eerste wordt de fout veroorzaakt door mysql_query() niet mysql_connect() . Dit komt waarschijnlijk omdat er geen foutafhandeling is rond de verbinding, dus de fout wordt pas later opgemerkt. Probeer wat foutafhandeling rond de verbinding toe te voegen:

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

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

In het bovenstaande worden fouten weergegeven zodra de fout optreedt.

Het tweede wat ik zie is dat je verbinding maakt met localhost met de ODBC gebruiker. Dit heeft geen zin als de fout wordt veroorzaakt door de verbindingscode die u hierboven hebt weergegeven. Ofwel logt u in met een gebruiker genaamd $username als uw probleem het probleem met één aanhalingsteken is dat ik hieronder uitleg, of root als je dat niet bent.

Het lijkt erop dat PHP verbinding probeert te maken met de standaardreferenties voor uw PHP-configuratie (te vinden in uw php.ini bestand), in plaats van de referenties die u heeft opgegeven. Dit doet me geloven dat de regels die je ons laat zien niet echt de regels zijn die worden uitgevoerd. Weet je zeker dat je niet ergens anders in je code verbinding probeert te maken? Als dat zo is, vermoed ik dat uw fout in dat deel van de code ligt.

Het is ook mogelijk (ik zou het moeten controleren) dat wanneer u probeert mysql_query() uit te voeren tegen een null-verbinding, probeert PHP misschien een verbinding voor u te maken. Daar zou ik echter niet op rekenen.

Ik raad u aan de bijgewerkte code uit te voeren die ik hierboven heb verstrekt, die de mysql_error() gebruikt functie om fouten weer te geven wanneer ze zich voordoen. Je zou zelfs wat echo kunnen toevoegen eigen verklaringen in die blokken, voor wat ouderwetse printf-foutopsporing.

Oorspronkelijk antwoord:

Het probleem is dat u uw variabelen tussen enkele aanhalingstekens plaatst. Als je ze tussen enkele aanhalingstekens plaatst, evalueert PHP de variabele niet naar de waarde. Bijvoorbeeld, in plaats van root . door te geven als tweede argument geef je $username . door . Uiteindelijk probeer je in te loggen op een server genaamd $localhost met een gebruiker genaamd $username met een wachtwoord van $password .

Bekijk de PHP-documentatiepagina voor Strings . Het verklaart dit:

Als je variabelen binnen een string wilt gebruiken, moet je double . gebruiken citaten, niet enkel. In dit geval hoeft u deze variabelen echter niet eens tussen aanhalingstekens te plaatsen, omdat hun waarden al zijn snaren. Je kunt de variabele gewoon helemaal alleen doorgeven. Probeer dit:

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


  1. Volledig via FIFO's aan MySQL-client koppelen

  2. Zoeken in een kolom met CSV-gegevens in een MySQL-tabel op het bestaan ​​van invoerwaarden

  3. Hoe maak je <option selected=selected> ingesteld door MySQL en PHP?

  4. Stap voor stap R12.2.6 EBS-installatie op Virtual Box Part -2