In een overzicht met leden wil ik doorklikken op eem lid maar dan krijg ik onderstaande error.
"Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/piraten/domains/piratenkoor.nl/public_html/profile.php on line 15"
Het bestand ziet er als volgt uit:
<?php
$title = "manschappen";
include('header.php');
include('common.php');
$link = dbConnect();
$query = "SELECT * FROM pirates WHERE pirateID = $pirateID";
$result = @mysql_query($query);
$pirateCount = mysql_num_rows($result);
if($pirateCount < 1) {
print"Deze piraat is gekielhaald.";
}
Wow, een upgrade van PHP 4.4 naar 5.5. Dat is een behoorlijke sprong van verleden naar heden!
Je query is gewoon stuk, zegt PHP. Om te weten wat er aan de hand is zul je moeten kijken wat mysql_error() te zeggen heeft. Het mooiste is natuurlijk een goede foutafhandeling waarmee je kijkt of het wel of niet gelukt is.
Verder wil ik nog even wat tips geven:
- Gebruik geen @ voor variabelen en functies. Foutmeldingen wil je niet op deze manier verbergen.
- Je for-loop kan je herschrijven naar een while-loop:
Dank voor je antwoord.
Dit alles gaat mijn pet te boven.
Waar kan ik iemand vinden die alle bestanden voor mij kan nakijken en kan omzetten naar de huidige standaards? PHP 5 of misschien zelfs al voorbereiden op PHP 6.
Tegen vergoeding uiteraard.
Als je klikt op de link voer foutafhandeling zie je hoe je d foutafhandeling kan aanpakken.
Verder heb ik al een voorbeeld gegeven over de while()-lus.
Dank voor je antwoord.
Dit alles gaat mijn pet te boven.
Waar kan ik iemand vinden die alle bestanden voor mij kan nakijken en kan omzetten naar de huidige standaards? PHP 5 of misschien zelfs al voorbereiden op PHP 6.
Tegen vergoeding uiteraard.
in eerste instantie alleen het bestand uit mijn eerste post.
Als dat werkt ga ik overleggen met de klant of zijn hun site compleet omgebouwd willen hebben naar de huidige standaards PHP5 / PHP6.
[size=xsmall]Toevoeging op 18/05/2015 19:43:08:[/size]
Goedenavond Aar,
Onderstaand krijg ik als melding terug:
Notice: Undefined variable: pirateID in /home/piraten/domains/piratenkoor.nl/public_html/profile.php on line 23
Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/piraten/domains/piratenkoor.nl/public_html/profile.php on line 24
Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in /home/piraten/domains/piratenkoor.nl/public_html/profile.php on line 24
Warning: mysql_query(): A link to the server could not be established in /home/piraten/domains/piratenkoor.nl/public_html/profile.php on line 24
Error: Access denied for user ''@'localhost' (using password: NO)
select * from pirates WHERE pirateID =
Ik zou dat sowieso doen. Werd er serieus eerst nog PHP 4.4 gedraaid?
Die wordt al vanaf 2008 al niet meer ondersteund en sindsdien zijn er honderden nieuwe en handige functies uitgekomen.
Ook kan je de daar gelinkte migratieschema's voor de subversie van PHP 5 bekijken.
[size=xsmall]Toevoeging op 18/05/2015 19:49:34:[/size]
John Korten op 18/05/2015 19:41:45
Onderstaand krijg ik als melding terug:
Notice: Undefined variable: pirateID in /home/piraten/domains/piratenkoor.nl/public_html/profile.php on line 23
Je hebt een varaibele $pirateID die niet gedefinieerd is, en dus leeg is. Deze moet een waarde hebben, of worden gecontroleerd of deze een waarde heeft (gebruik isset() )
Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/piraten/domains/piratenkoor.nl/public_html/profile.php on line 24
Gebruik bij voorkeur de MySQLi-functies, omdat de oude functies zullen verdwijnen, zoals ik al eerder heb aangegeven.
Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in /home/piraten/domains/piratenkoor.nl/public_html/profile.php on line 24
Warning: mysql_query(): A link to the server could not be established in /home/piraten/domains/piratenkoor.nl/public_html/profile.php on line 24
Error: Access denied for user ''@'localhost' (using password: NO)
select * from pirates WHERE pirateID =
Je username voor MySQL lijkt me leeg, waardoor je niet in kan loggen.
Die Access Denied meldingen komen van het mislukken van het maken van een verbinding met je database. Indien je geen verbinding hebt met een database kun je hier uiteraard ook geen queries op uitvoeren.
// defining the functions that occur throughout other scripts
// Defining the function to connect to the database
function dbConnect() {
// Access global variables
global $dbHost;
global $dbUser;
global $dbPass;
global $dbName;
// Attempt to connect to the database
$link = @mysql_connect($dbHost, $dbUser, $dbPass);
// If the connection failed . . .
if (!$link) {
// Inform of error and quit
fail("Couldn't connect to database server");
}
// Attempt to select our database. If failed...
if (!@mysql_select_db($dbName)) {
// Inform of error and quit
fail("Couldn't find database $dbName");
}
return $link;
}
// Defining the function to inform of a failure or error
function fail($errorMsg) {
print "Foutmelding: " . $errorMsg;
exit;
}