2012-06-14 4 views
0

Possible en double:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL resultqu'est-ce qui ne va pas sur ma requête sql?

<? 
$result ="select SQL_CALC_FOUND_ROWS a.*, b.name as brandname ,(case when max(length(d.pcode)) >0 then 1 else 0 end) as eventflag, min(d.price) as eventprice 
from brand b , product a left join event_product d on a.pcode = d.pcode where a.status != 0 and a.hotflag = 0 and a.bcode = b.code and a.bcode = '$bcode' 
group by a.pcode, a.bcode, a.ocode, a.ccode, a.pname, a.copy, a.etc, a.company, a.origin, a.status, a.opt1name, a.opt1value, a.opt2name, a.opt2value, a.opt3name, a.opt3value, a.gift_name, a.gift_file, a.gift_s_file, a.saleprice, a.saleflag, a.hotflag, a.hotcode, a.hotprice, a.price, a.term, a.point, a.pointflag, a.pointorder, a.content, a.html_check, a.couple1, a.couple2, a.couple3, a.regdate, a.cnt, a.sort, a.delflag, b.name 
order by a.regdate desc limit 12"; 

    $row_object = mysql_query("Select Found_Rows() as rowcount"); 
    $row_object = mysql_fetch_object($row_object); 
    $actual_row_count = $row_object->rowcount; 

?> 

SOME HTML 

<? while ($row = mysql_fetch_array($result)) { ?> 

HTML OUTPUT 

<? } ?> 

qui montre .. Warning: mysql_fetch_array(): argument fourni est pas une ressource de résultat MySQL près

<? while ($row = mysql_fetch_array($result)) { ?> 

La VERSION MYSQL est 5.2.3-faucon-alpha.

+0

Vous ne faites aucune vérification d'erreur dans votre requête. Voir http://php.net/manual/en/function.mysql-query.php –

+1

'mysql_error()' est votre ami –

+0

# 1. Les extensions mysql_ * sont obsolètes utilisez 'mysqli' ou' PDO' .... # 2. Quand j'ai une requête qui ne fonctionne pas, je fais écho à la requête elle-même - puis la copie dans phpmyadmin et vois ce qu'elle a à me dire ... Je trouve souvent ma réponse de cette façon ... mais à la fois le les gars ci-dessus sont corrects en ce que vous avez vraiment besoin de faire une vérification d'erreur. – Justin

Répondre

2

Vous faites mysql_fetch_array($result), mais $result contient en fait le texte de votre requête:

$result ="select SQL_CALC_FOUND_ROWS a.*, b.name as brandname ,(case when max(length(d.pcode)) >0 then 1 else 0 end) as eventflag, min(d.price) as eventprice 
from brand b , product a left join event_product d on a.pcode = d.pcode where a.status != 0 and a.hotflag = 0 and a.bcode = b.code and a.bcode = '$bcode' 
group by a.pcode, a.bcode, a.ocode, a.ccode, a.pname, a.copy, a.etc, a.company, a.origin, a.status, a.opt1name, a.opt1value, a.opt2name, a.opt2value, a.opt3name, a.opt3value, a.gift_name, a.gift_file, a.gift_s_file, a.saleprice, a.saleflag, a.hotflag, a.hotcode, a.hotprice, a.price, a.term, a.point, a.pointflag, a.pointorder, a.content, a.html_check, a.couple1, a.couple2, a.couple3, a.regdate, a.cnt, a.sort, a.delflag, b.name 
order by a.regdate desc limit 12"; 

Votre résultat réel est perdu, parce que vous avez eu stocké dans $row_object qui vous écraser avec le résultat de mysql_fetch_object().

+0

Merci Lanzz ~ J'ai résolu avec Zagor23. Mais l'autre problème est "$ actual_row_count" sortie "0". Y at-il un problème près de "sélectionnez SQL_CALC_FOUND_ROWS a. *, ..."? –

+0

Vous devriez probablement poster une nouvelle question à ce sujet et publier votre code actuel. Dans le code publié dans votre question, vous n'exécutez jamais la requête 'SQL_CALC_FOUND_ROWS'. – lanzz

3

Vous passez une chaîne à mysql_fetch_array au lieu de la ressource MySQL. Vous devez faire:

$res = mysql_query($result); 

avant

<? while ($row = mysql_fetch_array($res)) { ?> 

Ensuite, si la requête est $result correcte, vous devriez obtenir des résultats.

+0

Merci. Ça marche. ^^ –

Questions connexes