PHP 5.2.3 + MySQL 5.0.45 Warning: mysql_fetch_array():
Kan iemand mij helpen met het volgende:
Ik heb een nieuws pagina in php gemaakt icm een database.
Hier volgen de scripts:
Index.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$db=mysql_connect("localhost","user","pass") or die ("Verbinding Mislukt");
mysql_select_db("tabel",$db);
$news_SQL="SELECT * FROM nieuws ORDER BY news_datetime DESC";
$news_result=mysql_query($news_SQL);
//In dit deel worden meldingen weergegeven
while($news=mysql_fetch_array($news_result)) {
if(strlen($news['news_main'])>120){
$news['news_main']=substr($news['news_main'],0,180) . " ... <a href=news.php?news_ID=" . $news['news_ID'] . ">meer</a>";
}
?>
$db=mysql_connect("localhost","user","pass") or die ("Verbinding Mislukt");
mysql_select_db("tabel",$db);
$news_SQL="SELECT * FROM nieuws ORDER BY news_datetime DESC";
$news_result=mysql_query($news_SQL);
//In dit deel worden meldingen weergegeven
while($news=mysql_fetch_array($news_result)) {
if(strlen($news['news_main'])>120){
$news['news_main']=substr($news['news_main'],0,180) . " ... <a href=news.php?news_ID=" . $news['news_ID'] . ">meer</a>";
}
?>
<table width="400" border="0" cellspacing="0"
cellpadding="0" align="center">
<tr>
<td>
<span class="kleiner">
Code (php)
<br><b><span class="kleiner">
</b></span>
</td>
</tr>
<tr>
<td>
<span class="kleiner"></span>
</td>
</tr>
<tr>
<td>
<hr width="400" size="1" noshade>
</td>
</tr>
</table>
----------------------------------------------------------------------------------------
news.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$db=mysql_connect("localhost","user","pass") or die ("Verbinding Mislukt");
mysql_select_db("easyc",$db);
$news_SQL="SELECT * FROM nieuws WHERE news_ID=" . $news_ID;
$news_result=mysql_query($news_SQL);
$news=mysql_fetch_array($news_result);
mysql_close();
?>
$db=mysql_connect("localhost","user","pass") or die ("Verbinding Mislukt");
mysql_select_db("easyc",$db);
$news_SQL="SELECT * FROM nieuws WHERE news_ID=" . $news_ID;
$news_result=mysql_query($news_SQL);
$news=mysql_fetch_array($news_result);
mysql_close();
?>
----------------------------------------------------------------------------------------
Index.php laat hij netjes zien maar zodra ik op de link naar het volledige bericht klik, krijg ik de volgende foutmelding:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\webroot\news.php on line 8
line 8 is op zijn beurt in index.php :
$news=mysql_fetch_array($news_result);
Kan het zijn dat er een server variabele verandert moet worden op de server?
Ik kom er niet meer uit.
Alvast bedankt
Gr,
Matthijs
doe eens wat foutafhanelding, dan had je de vraag waaarschijnlijk niet hoeven stellen...je gaat er overal blindelings van uit dat je queries lukken... mijn advies dus: fout afhandeling... dan ontdek je zelf de fout en ben jij ook weer wat wijzer
Bedankt voor je reactie, maar hier kan ik niks mee. Ik ben wat dat betreft een newbie...
zou je misschien inderdaad zoals michel al zei wat error handlers erin kunnen zetten...
dit kan je misschien met jou goed vinden vervangen in je news.php :
Code (php)
1
2
3
4
2
3
4
<?PHP
$news_SQL = mysql_query("select * from nieuws where news_ID = '".$news_ID."'") or die ('kan query niet uitvoeren '.mysql_error());
$news = mysql_fetch_array($news_SQL);
?>
$news_SQL = mysql_query("select * from nieuws where news_ID = '".$news_ID."'") or die ('kan query niet uitvoeren '.mysql_error());
$news = mysql_fetch_array($news_SQL);
?>
ps. werkt je index wel gewoon goed ?
Gewijzigd op 01/01/1970 01:00:00 door Marco PHPJunky
Bedankt voor je reactie. Ik heb de code vervangen met die van jou:
Code (php)
1
2
3
4
2
3
4
<?php
$news_SQL = mysql_query("select * from nieuws where news_ID = '".$news_ID."'") or die ('kan query niet uitvoeren '.mysql_error());
$news = mysql_fetch_array($news_SQL);
?>
$news_SQL = mysql_query("select * from nieuws where news_ID = '".$news_ID."'") or die ('kan query niet uitvoeren '.mysql_error());
$news = mysql_fetch_array($news_SQL);
?>
De foutmelding is nu wel weg maar zie verder nu helemaal niks meer.
dus met anderen worden wat staat er nu nog allemaal in je news.php ?
groetjes..
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$db=mysql_connect("localhost","user","pass") or die ("Verbinding Mislukt");
mysql_select_db("database",$db);
$news_SQL = mysql_query("select * from nieuws where news_ID = '".$news_ID."'") or die ('kan query niet uitvoeren '.mysql_error());
$news = mysql_fetch_array($news_SQL);
mysql_close();
?>
$db=mysql_connect("localhost","user","pass") or die ("Verbinding Mislukt");
mysql_select_db("database",$db);
$news_SQL = mysql_query("select * from nieuws where news_ID = '".$news_ID."'") or die ('kan query niet uitvoeren '.mysql_error());
$news = mysql_fetch_array($news_SQL);
mysql_close();
?>
Zo heb ik geen fout, maar een wit scherm en geen resultaat :-(
Groeten,
Matthijs
Maar dit komt omdat je geen gegevens laat zien op je scherm (echo / print)
het geen wat je tot nu gedaan hebt is het aanroepen van de gegevens en nog niet het showen / laten zien van gegevens..
of ik moet het verkeerd zien omdat je misschien niet je totale news.php script gepost hebt maar zo ja wat wil je dan in news.php laten zien als ik vragen mag ?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
// rest van je code
?>
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
// rest van je code
?>
Mocht er dan ergens wat goed fout gaan, krijg je tenminste een foutmelding te zien. Er zijn betere manieren (eigen foutafhandeling bouwen), maar hiermee kun je prima debuggen.
Je moet ook je resultaten echo'en!
doe dit maar even:
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
$db=mysql_connect("localhost","user","pass") or die ("Verbinding Mislukt");
mysql_select_db("database",$db);
$news_SQL = mysql_query("select * from nieuws where news_ID = '".$news_ID."'") or die ('kan query niet uitvoeren '.mysql_error());
while ($row = mysql_fetch_array($news_SQL)) {
echo $row['dbveld1']."<br>";
echo $row['dbveld2']."<br>";
// etc...
}
mysql_close($db);
?>
$db=mysql_connect("localhost","user","pass") or die ("Verbinding Mislukt");
mysql_select_db("database",$db);
$news_SQL = mysql_query("select * from nieuws where news_ID = '".$news_ID."'") or die ('kan query niet uitvoeren '.mysql_error());
while ($row = mysql_fetch_array($news_SQL)) {
echo $row['dbveld1']."<br>";
echo $row['dbveld2']."<br>";
// etc...
}
mysql_close($db);
?>
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
Nu ik dat zojuist heb gedaan krijg ik alleen de datum terug: 1970-01-01 01:00.
Inmiddels heb ik de oplossing gevonden:
De regel $news_ID=$_GET['news_ID']; toegevoegd en zowel jouw script als mijn script doet het. Kan je me vertellen waarom je de quote-tjes EN aanhalingsteken gebruikt? '".$news_ID."'
News.php ziet er uiteindelijk zo uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
include("connect.inc.php");
//Parameter inlezen
$news_ID=$_GET['news_ID'];
//type variabele instellen om misbruik te voorkomen
settype($news_ID,"int");
$news_SQL="SELECT * FROM nieuws WHERE news_ID=" . $news_ID;
$news_result=mysql_query($news_SQL);
$news=mysql_fetch_array($news_result);
mysql_close();
?>
include("connect.inc.php");
//Parameter inlezen
$news_ID=$_GET['news_ID'];
//type variabele instellen om misbruik te voorkomen
settype($news_ID,"int");
$news_SQL="SELECT * FROM nieuws WHERE news_ID=" . $news_ID;
$news_result=mysql_query($news_SQL);
$news=mysql_fetch_array($news_result);
mysql_close();
?>
Code (php)
1
2
3
4
5
2
3
4
5
<?php
//Hier worden de berichten weergegeven
//De datum opmaken
$unixtime = strtotime($news['news_datetime']);
?>
//Hier worden de berichten weergegeven
//De datum opmaken
$unixtime = strtotime($news['news_datetime']);
?>
@Marco: erg bedankt voor je tijd!!!
@Frank: error_reporting(E_ALL); staat standaard aan in m'n php.ini.
ini_set('display_errors', 1); heb ik niet aanstaan maar ga ik ook gebruiken
@Wout: ook bedankt, hoewel ik in news.php juist het volledige bericht wil lezen en geen while lus meer die ik al in index.php gebruik.
Gr,
Matthijs
Dit vraagt om problemen, wie garandeerd je dat de invoer goed is?
bijvoorbeeld:
jouwpagina.php?news_id=1;DELETE%20FROM%20nieuws