Curieus: als ik een eenvoudige sql query draait in phpmyadmin, dan runt de query succesvol:

SELECT *
FROM `kaartleggingen_2016a`
WHERE `IPadres` = '86.86.157.44'

Maar neem ik deze query op in een php-script, dan krijg ik een - overigens weinig zeggende - foutmelding:

Fout in query: SELECT * FROM 'kaartleggingen_2016a' WHERE `IPadres` = '86.86.157.44'

Wie heeft enig idee hoe ik dit probleem kan oplossen?
en als je de foutmelding van mysql laat weergeven?
mysql_error() of een moderne variant daarvan?

zou zo maar kunnen dat hij dan klaagt over een error near ''kaart....

omdat je quotes om de tabelnaam hebt gezet
SELECT * FROM 'kaartleggingen_2016a' WHERE `IPadres` = '86.86.157.44'

- De quotes om kaartleggingen_2016a moeten of weg, of door "backticks" (meestal boven de {tab} toets) worden vervangen.
- Is de quote achter het IP-adres wel een echte (single) quote (zie er een beetje apart uit - misschien gekopieerd vanuit Word oid)?
Die backticks zijn ook zo een typisch mysql/phpmyadmin ding.. laat die toch lekker achterwege.

SELECT * FROM kaartleggingen_2016a WHERE IPadres = '86.86.157.44'
Ook als ik alle quotes weghaal, krijg ik dezelfde foutmelding.

[size=xsmall]Toevoeging op 04/12/2019 08:22:14:[/size]

En als ik er een foutmelding bij doe, wordt het:
Error description: Fout in query: SELECT * FROM kaartleggingen_2016a WHERE IPadres = '86.86.157.44'
nogmaals: mysql kan exact vertellen wat er mis is.

Als je kiest voor een weinig zeggende foutmelding als "er gaat iets mis", dan kun je daar weinig mee. De syntax lijkt goed, maar het kan zo maar zijn, dat er fouten in de hoofdletters van de tabelnaam zitten, de tabel niet bestaat of de kolom niet bestaat.

Kan ook zijn dat de user geen rechten heeft op die tabel, of dat je sowieso al met een verkeerde (of geen) database verbonden bent.

Kortom: gebruik (bij het ontwikkelen) de foutmelding die de database je geeft.
Beste eH,

Bedoel je zoiets als: echo("Error description: " . mysqli_error($sql));
of iets anders?
Ja, dat bedoel ik.

Waarbij $sql dan je connection is he. Niet de query.

dus iets als
<?php

$query ="SELECT * FROM kaartleggingen_2016a WHERE IPadres = '86.86.157.44' ";

if(!$res = mysqli_query($sql, $query)) {
echo 'query fout: '. mysqli_error($sql);
}
?>

evnetueel aangevuld met de query zelf. Maar dat alles alleen als je nog niet in productie bent met je site.
Dat levert bij mij alleen de tekst op: "query fout: ". De mysqli_error($sql) wordt dus niet getoond.
Omdat je geen $sql moet gebruiken, maar de variabele van je connectie.
Het is een beetje een onhandige gekozen variabele, maar Ivo zegt het goed.
Ja, dat zag ik ook. Bij is dat $conn. Nu ik dat veranderd heb krijg ik niets meer te zien van het resultaat.

[size=xsmall]Toevoeging op 04/12/2019 22:47:27:[/size]

Voor de volledigheid de volledige code (zonder de inloggegevens):

<?php
$conn = mysqli_connect($dbhost1, $dbuser1, $dbpass1, $dbname1);
mysqli_set_charset($conn, "utf8");

// Check connection
if (mysqli_connect_errno())
  {
    echo "Verbinding met MySQL mislukt: " . mysqli_connect_error();
  } else {
    // alles is gelukt, voer hier de rest uit.
  echo "Verbinding OK";
		echo "<br>";
		
		//Ip-adres
		$ipAdres = $_SERVER["REMOTE_ADDR"];


		//today
		$date = date("Y-m-d");
		echo $date;
		echo "<br>";
		$tijd = date("H:i:s");
		echo $tijd;
		echo "<br>";
		$uur = date("H");
		$minuut = date("i");
		echo $uur;
		echo "<br>";
		echo $minuut;
		echo "<br>";
	
echo "<br>";

	$query = "SELECT * FROM kaartleggingen_2016a WHERE IPadres = '86.86.157.44'";
		
	if(!$res = mysqli_query($conn, $query)) {
	echo 'query fout: '. mysqli_error($conn);
	}

}
?>

Reageren