Smarty - mysql_fetch_*(): supplied argument is not a valid MySQL result resource
Helaas krijg ik telkens de foutmelding die, ondanks ik het aanpas, telkens weer terug komt en ik kan echt niet vinden wat ik nu fout doe. Op de template pagina (TPL) zal deze query in een lijst moeten worden weergegeven.
Misschien kan iemand mij helpen/ duidelijke stap voor stap instructies geven hoe ik dit op kan lossen?
Het gaat om de volgende code waarbij we ervan uitgaan dat "$query_about" de eerste regel is. De fout zit in m in het volgende:
$about = array();
while($db_row = mysql_fetch_row($about)) {
$about[] = $db_row;
}
============= CODE ============
$query_about = "SELECT dl_id, dl_name, dl_file, dl_descr, dl_cat_id, dl_type, lang FROM downloads WHERE dl_cat_id = '1' ORDER BY dl_name ASC LIMIT 0 , 50";
$about = mysql_query($query_about) or die(mysql_error());
$row_about = mysql_fetch_assoc($about);
$totalRows_about = mysql_num_rows($about);
$dl_id_about = $row_about['dl_id']; // ID
$dl_name_about = $row_about['dl_name']; //file titel
$dl_file_about = $row_about['dl_file']; //file
$dl_descr_about = $row_about['dl_descr']; //description of the file
$dl_cat_id_about = $row_about['dl_cat_id']; // id of the group cat
$dl_type_about = $row_about['dl_type']; //type of download
$about = array();
while($db_row = mysql_fetch_row($about)) {
$about[] = $db_row;
}
echo $dl_id_about . "<BR>" ;
echo $dl_name_about . "<BR>";
echo $dl_file_about . "<BR>";
echo $dl_descr_about . "<BR>";
echo $dl_cat_id_about . "<BR>";
echo $dl_type_about . "<BR>";
$smarty -> assign('dl_id_about', $dl_id_about);
$smarty -> assign('dl_name_about', $dl_name_about);
$smarty -> assign('dl_file_about', $dl_file_about);
$smarty -> assign('dl_descr_about', $dl_descr_about);
$smarty -> assign('dl_cat_id_about', $dl_cat_id_about);
$smarty -> assign('dl_type_about', $dl_type_about);
$about = array();
while($db_row = mysql_fetch_row($about)) {
Dus je wilt fetchen op een leeg array()?
Wat -SanThe- zegt, je gebruikt $about eerst om het query result in te returnen, waarna je er een lege array aan toekent en deze probeert uit te lezen als db resultset. Met andere woorden, verander één van deze twee variabelen.
daarmee heb ik bijvoorbeeld een top 5 objecten gemaakt op www.ipsola.com (mag ik dit hier zo posten btw?)
daarbij werkte het wel okay via het volgende script:
$db_query = "SELECT countries.country_id AS CountryId, countries.name_". $Lang . " AS name, COUNT(properties.addr_country_id) AS CountryAantal FROM countries, properties WHERE properties.addr_country_id = countries.country_id GROUP BY name ASC ORDER BY `CountryAantal` DESC LIMIT 0 , 5";
$db_result = mysql_query($db_query);
$name = $db_result['name'];
$CountryId = $db_result['CountryId'];
$landen = array();
while($db_row = mysql_fetch_assoc($db_result)) {
$landen[] = $db_row;
}
$top_ten_intro = $lng['top_ten_intro'];
$smarty->assign('landen', $landen);
$smarty->assign('name', $name);
$smarty->assign('CountryId', $CountryId);
$smarty->assign('top_ten_intro', $top_ten_intro);
dus wat ik volgens jullie zou moeten doen is dus een naam geven aan de array?
$about = array(NAAM_INVULLEN);
while($db_row = mysql_fetch_row($about)) {
$about[] = $db_row;
}
- SanThe - op 27/06/2011 21:26:49:
Foutafhandeling inbouwen geeft helderheid.
$about = array();
while($db_row = mysql_fetch_row($about)) {
Dus je wilt fetchen op een leeg array()?
$about = array();
while($db_row = mysql_fetch_row($about)) {
Dus je wilt fetchen op een leeg array()?
$anderenaam = array();
ah :) nice Ik ga het proberen/
$about = mysql_query(...);
Dus er zit een queryresultaat in $about (slechte naam trouwens)
$about = array();
Je overschrijft $about. Nu is $about dus een leeg array().
while($db_row = mysql_fetch_row($about)) {
Dus ook hier is $about een leeg array() en geen queryresultaat meer.
Gewijzigd op 27/06/2011 23:47:06 door Allan de Bruin