Warning: mysql_fetch_assoc
Ik heb de volgende script gemaakt;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
include "connect.php"; //verbinding maken
$query = "SELECT `dbo_SSIOSPlatforms.Name, dbo_SSIMachine.Name, dbo_SSIUser.UserName` FROM `dbo_SSIOSPlatforms, dbo_SSIMachine, dbo_SSIUser`";
//query is aangemaakt
$sql = mysql_query($query);
//query is uitgevoerd
echo"<table border=\"1\">
<tr><td>1</td><td>2</td><td>3</tr>";
while($record = mysql_fetch_assoc($sql))
{
echo"<tr><td>".$record->dbo_SSIOSPlatforms.Name."</td><td>".$record->dbo_SSIMachine.Name."</td><td>".$record->dbo_SSIUser.UserName."</td></tr>";
}
echo "</table>";
?>
include "connect.php"; //verbinding maken
$query = "SELECT `dbo_SSIOSPlatforms.Name, dbo_SSIMachine.Name, dbo_SSIUser.UserName` FROM `dbo_SSIOSPlatforms, dbo_SSIMachine, dbo_SSIUser`";
//query is aangemaakt
$sql = mysql_query($query);
//query is uitgevoerd
echo"<table border=\"1\">
<tr><td>1</td><td>2</td><td>3</tr>";
while($record = mysql_fetch_assoc($sql))
{
echo"<tr><td>".$record->dbo_SSIOSPlatforms.Name."</td><td>".$record->dbo_SSIMachine.Name."</td><td>".$record->dbo_SSIUser.UserName."</td></tr>";
}
echo "</table>";
?>
Ik krijg hierbij deze foutmelding;
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 3.0\www\test.php on line 10
Weten jullie misschien raad? Ik heb zelf het probleem niet kunnen oplossen.
Ik zou het fijn vinden als iemand ernaar zou kunnen kijken.
Met vriendelijke groet,
Jan Volker
Code (php)
1
2
3
2
3
<?php
$query = "SELECT dbo_SSIOSPlatforms.Name, dbo_SSIMachine.Name, dbo_SSIUser.UserName FROM 'dbo_SSIOSPlatforms, dbo_SSIMachine, dbo_SSIUser'";
?>
$query = "SELECT dbo_SSIOSPlatforms.Name, dbo_SSIMachine.Name, dbo_SSIUser.UserName FROM 'dbo_SSIOSPlatforms, dbo_SSIMachine, dbo_SSIUser'";
?>
Gewijzigd op 01/01/1970 01:00:00 door Thijs van den Berg
Voer de query eens in in PHPmyadmin.
Ik zie in ieder geval al 1 fout. (of zijn het er nou 2?)
Ik had gehoord dat je geen punten in je benamingen mocht gebruiken, of heb ik dat fout gehoord? :)
Mitchell schreef op 03.04.2009 16:43:
Nee, dat heb je goed gehoord.Ik had gehoord dat je geen punten in je benamingen mocht gebruiken, of heb ik dat fout gehoord? :)
Verder ontbreekt foutafhandeling en dus is het logisch dat het fout gaat. Ga dus eerst je script afmaken en dan pas testen. Met een half script is het logisch dat het niet werkt.
klik.
Aanvulling op Frank: Ik ga er van uit dat mijn script altijd de database kan vinden, juiste table kan selecteren, en de gegevens kan krijgen. Dus het gene wat je zou moeten controleren in de invoer van data.
Thijs van den Berg schreef op 03.04.2009 16:51:
Grappenmaker ;)Ik ga er van uit dat mijn script altijd de database kan vinden, juiste table kan selecteren, en de gegevens kan krijgen.
Zie dit topic waar het gebrek aan foutmeldingen ook al voor problemen zorgt. Gossie, dat is een topic van jou!
Quote:
Dat moet je in je PHP-code controleren en je moet controleren of de query ook daadwerkelijk is gelukt. Uiteraard moet de database ook controleren of de data wel in de tabel past, anders ga je nog steeds op je smoelwerk. Dus het gene wat je zou moeten controleren in de invoer van data.
Tenzij je geen goed script wilt hebben, dan kun je natuurlijk een eind weg prutsen.
Maar ik begrijp wat je bedoelt.
Code (php)
1
2
3
4
5
2
3
4
5
create temp table test(
pass varchar(20)
);
insert into test(pass) values(md5('mysql sucks'));
pass varchar(20)
);
insert into test(pass) values(md5('mysql sucks'));
Resultaat:
Quote:
ERROR: value too long for type character varying(20)
SQL status:22001
SQL status:22001
Toch wel handig die foutmeldingen, of niet dan?
Ja tuurlijk, alsnog als je een keer succesvol met een database connect, hoef je toch niet elke keer te controleren of het gelukt is, lijkt mij. Of is het alsnog beter van wel?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
while($record = mysql_fetch_assoc($sql))
{
echo"<tr><td>".$record->dbo_SSIOSPlatforms.Name."</td><td>".$record->dbo_SSIMachine.Name."</td><td>".$record->dbo_SSIUser.UserName."</td></tr>";
}
?>
while($record = mysql_fetch_assoc($sql))
{
echo"<tr><td>".$record->dbo_SSIOSPlatforms.Name."</td><td>".$record->dbo_SSIMachine.Name."</td><td>".$record->dbo_SSIUser.UserName."</td></tr>";
}
?>
kan dit natuurlijk nooit. mysql_fetch_assoc returned een array. Dus zo:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
while($record = mysql_fetch_assoc($sql))
{
echo $record['naamzonderpunten'];
}
?>
while($record = mysql_fetch_assoc($sql))
{
echo $record['naamzonderpunten'];
}
?>
mvg.
Gewijzigd op 01/01/1970 01:00:00 door W W
De SQL query werkt gewoon, als ik hem in phpmyadmin uitvoer krijg ik gewoon resultaat.
Echter kan ik geen naam zonder punt gebruiken, omdat ik hem met dbo_SSIOSPlatforms.Name uit de database haal.
Ik zou dus echt $record->dbo_SSIOSPlatforms.Name moeten doen.
?
pgFrank schreef op 03.04.2009 17:07:
Wel natuurlijk even configureren in strict modus anders kapt mySQl het zonder melding af (alleen een warning die je niet ziet in PHP).
Quote:
Oh? Je moet MySQL eerst vertellen dat deze jouw data niet mag verknallen? Hele bijzondere functionaliteit van een database...Wel natuurlijk even configureren in strict modus anders kapt mySQl het zonder melding af (alleen een warning die je niet ziet in PHP).
Moet je maar een betere database gebruiken, dan is veilige data gewoon basis functionaliteit. Lijkt me logisch, daar zijn databases voor uitgevonden.
Ole, daar is pgFrank :')