J'ai donc 3 tables DB qui sont toutes identiques dans tous les sens (les données sont différentes) sauf le nom de la table. Je l'ai fait pour que je puisse utiliser un morceau de code avec un interrupteur comme ceci:Problème mysql_fetch_array()
function disp_bestof($atts) {
extract(shortcode_atts(array(
'topic' => ''
), $atts));
$connect = mysql_connect("localhost","foo","bar");
if (!$connect) { die('Could not connect: ' . mysql_error()); }
switch ($topic) {
case "attorneys":
$bestof_query = "SELECT * FROM attorneys p JOIN (awards a, categories c, awardLevels l) ON (a.id = p.id AND c.id = a.category AND l.id = a.level) ORDER BY a.category, a.level ASC";
$category_query = "SELECT * FROM categories";
$db = mysql_select_db('roanoke_BestOf_TopAttorneys');
$query = mysql_query($bestof_query);
$categoryQuery = mysql_query($category_query);
break;
case "physicians":
$bestof_query = "SELECT * FROM physicians p JOIN (awards a, categories c, awardLevels l) ON (a.id = p.id AND c.id = a.category AND l.id = a.level) ORDER BY a.category, a.level ASC";
$category_query = "SELECT * FROM categories";
$db = mysql_select_db('roanoke_BestOf_TopDocs');
$query = mysql_query($bestof_query);
$categoryQuery = mysql_query($category_query);
break;
case "dining":
$bestof_query = "SELECT * FROM restaurants p JOIN (awards a, categories c, awardLevels l) ON (a.id = p.id AND c.id = a.category AND l.id = a.level) ORDER BY a.category, a.level ASC";
$category_query = "SELECT * FROM categories";
$db = mysql_select_db('roanoke_BestOf_DiningAwards');
$query = mysql_query($bestof_query);
$categoryQuery = mysql_query($category_query);
break;
default:
$bestof_query = "switch on $best did not match required case(s)";
break;
}
$category = '';
while($result = mysql_fetch_array($query)) {
if($result['category'] != $category) {
$category = $result['category'];
//echo "<div class\"category\">";
$bestof_content .= "<h2>".$category."</h2>\n";
//echo "<ul>";
Maintenant, tout cela fonctionne parfaitement pour les deux premiers cas, mais la troisième pauses « à manger » avec cette erreur:
Attention: mysql_fetch_assoc(): argument fourni est pas une ressource de résultat MySQL ... sur la ligne 78
ligne 78 est le while()
au fond. J'ai vérifié et revérifié et ne peux pas comprendre quel est le problème. Voici la structure de la base de données pour les «restaurants»:
CREATE TABLE `restaurants` (
`id` int(10) NOT NULL auto_increment,
`restaurant` varchar(255) default NULL,
`address1` varchar(255) default NULL,
`address2` varchar(255) default NULL,
`city` varchar(255) default NULL,
`state` varchar(255) default NULL,
`zip` double default NULL,
`phone` double default NULL,
`URI` varchar(255) default NULL,
`neighborhood` varchar(255) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=249 DEFAULT CHARSET=utf8
Est-ce que quelqu'un voit ce que je fais mal ici? Je passe "salle à manger" à la fonction et comme je l'ai déjà dit, les deux premiers cas dans le commutateur fonctionnent bien.
Je suis sûr que c'est quelque chose de stupide ...
Un conseil: puisque vous savez que les deux autres cas de commutation fonctionne; extrayez le code problématique et essayez-le avec un minimum de facteurs d'erreur possibles. Après avoir fait cela, éditez votre réponse afin que nous puissions nous concentrer sur la partie problématique du code (si vous en avez toujours besoin, c'est généralement la façon dont vous pouvez le voir par vous-même :)). À votre santé. – chelmertz
Cela n'aide pas à répondre à votre question, mais avoir 3 tables identiques avec des noms différents semble idiot. Vous pouvez très facilement utiliser simplement une autre colonne, par exemple 'type' ou' type_id' pour différencier. En outre, 'SELECT * ...' est mauvais. http://www.parseerror.com/sql/select%2Aisevil.html –