Mensen,

Ik gebruik een script om fouten met de database connectie te kunnen bekijken.

Ik heb alleen een fout waar ik niet uit kom. Wie kan er even kijken:


function safe_query($db, $query){
  global $ERRORS;
  return false;
}

  if (DEBUG_MODE) {
  if (!$result = @mysqli_query($db, $query)) {
    die("{$ERRORS['QUERY_ERROR_ADMIN']})
    <br> uitgevoerde query: $query .
    <br> MySQL-foutnummer: ". mysqli_errno($db) .
    "<br>MySQL-melding: " . mysqli_error($db));
  }
  else {
    return $result;
  }
  }
  else{
  if (!$result = @mysqli_query($db, $query)){
    die ($ERRORS ['QUERY_ERROR_USER']);
  }
  else {
    return $result;
  }
  }



Melding op mijn scherm:

Warning: mysqli_errno() expects parameter 1 to be mysqli, string given in /public/sites/mijnsite/php/Gastenboek/functions.php on line 40

Warning: mysqli_error() expects parameter 1 to be mysqli, string given in /public/sites/mijnsite /php/Gastenboek/functions.php on line 41
Er is een fout opgetreden bij het werken met de database
)
uitgevoerde query: null .
MySQL-foutnummer:
MySQL-melding:
Waar komt $db vandaan? En haal ook de @-jes weg, want foutmeldingen wil je niet verbergen.
Is het de bedoeling dat deze code onderdeel is van de functie safe_query? Want die functie heb je al afgesloten tegen de tijd dat je met de code begint.
@tjes weggehaald.

Die $db staat in mijn config file bij het verbinden met de database.

Ziet er zo uit:


$db = 'null';
Ten eerste je zou een MySQLi-connectie moeten geven met de functie mysqli_connect(). Wat jij nu hebt is een string met 'null' als inhoud.
Rubensky PHP starter op 28/12/2016 21:31:03

Die $db staat in mijn config file bij het verbinden met de database.

Ziet er zo uit:


$db = 'null';



Ook dit lijkt niet goed te gaan. Waarschijnlijk bedoel je
<?php
$db = null;
?>

en waar gebruik je mysqli_connect() dan?
in die $db zit het probleem niet denk ik. Het is namelijk het laatste stuk wat ik heb toegevoegd waar het probleem zit.
Want? Waarom denk je dat het niet in $db zit?
Zit daar de connectie in van je database?
Welk stuk heb je toegevoegd toen het nog wel werkte?
En waarom werkt het nu dan niet meer?
Ik heb alleen de code uit bericht 1 toegevoegd daarvoor werkte alles naar behoren.

O ja, dit deel heb ik bovenaan de file toegevoegd

<?php
define ('DEBUG_MODE', true);
$ERRORS ['QUERY_ERROR_USER'] = 'Onze excusus er is iets mis gegaan met de database neem eventueel contact op met de beheerder';
$ERRORS ['QUERY_ERROR_ADMIN'] = 'Er is een fout opgetreden bij het werken met de database<br>';

?>

Waarom het nu niet meer werkt dat vraag ik nu juist. Het idee is het beveiligen van de query's in de database. Zodat de gebruiker niet een of andere vreemde melding te zien krijgt. Maar ook dat de hacker dat niet ziet en daar dus niets mee kan.
Waar is nu je database-connectie?
Die zit in het config bestand. Die include ik aan het begin van de file waar ik bovenstaande functie heb geschreven.

Die ziet er zo uit:


  $host = 'localhost';
  $gebruiker = 'root';
  $wachtwoord = 'gaikhiernietplaatsen';
  $database = 'gastenboek';
  $query = 'null';
  $db = 'null';


Ik wil hier wel de gehele code plaatsen maar dat is niet zo gewenst denk ik.

Reageren