Iedereen,

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.";
}



for ($count = 0; $count < $pirateCount; $count++) {
$pirates = mysql_fetch_array($result);
$pirateID = $pirates['pirateID'];
$pirateName = $pirates['pirateName'];
$specialty = $pirates['specialty'];
$fotoBigName = $pirates['fotoBigName'];
$info = $pirates['info'];

print "
<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td width=\"100%\" align=\"left\" valign=\"top\">
<b>$pirateName</b><br><br>Specialiteit: $specialty<br><br>$info
</td>
<td width=\"10\"><img src=\"/_images/spacer.gif\" width=\"10\" height=\"10\"></td>
<td align=\"right\" valign=\"top\">
<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#003F8C\">
<tr>
<td valign=\"top\"><img src=\"/manschappen/$fotoBigName\" alt=\"$pirateName\" hspace=\"0\" vspace=\"0\" align=\"right\" border=\"0\"></td>
</tr>
</table>
</td>
</tr>
</table>
";

}

include('footer.php');

?>

Het heeft iets te maken met het feit dat deze website eerst op PHP 4.4 draaide en nu op PHP 5.5

Kan iemand mij misschien vertellen wat ik moet veranderen in profile.php(bovenstaande) om het werkend te krijgen ?
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:

while($pirates=mysql_fetch_assoc($result)) {
// (...)
}

- Verdiep je in de MySQLi_*-functies. De oude MySQL_* functies zullen in PHP 6 verdwijnen.
- Verder horen variabelen buiten quotes.
Goedenavond,

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.
John Korten op 18/05/2015 19:23:17

Goedenavond,

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.


Enig idee om hoeveel bestanden het gaat?
Goedenavond,

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 =

Lijkt toch iets met een login te zijn of niet ?
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.

Zie ook:
http://php.net/manual/en/migration5.php

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.
In mijn common.php staan de db settings.
Heb nu een php file gemaakt om db copnnectie te checken en die geeft dezelfde melding.

Dat "Acces denied for user "@'localhost' waar kan ik dat vinden.
Als ik inlog in phpmyadmin met dbuser en wachtwoord kom ik er gewoon in.
Hoe ziet je connectie er uit? Kan je die laten zien?
Maskeer wel even je wachtwoord en username.
De common file voor deze website ziet er als volgt uit:
<?php

// Database details
$dbHost = "localhost";
$dbUser = "******";
$dbPass = "******";
$dbName = "******";

// 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;
}

?>

Reageren