所以我有3個數據庫表,除了表名以外,在所有方面都完全相同(數據不同)。我這樣做,所以我可以使用一個代碼段,象這樣一個開關: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>";
現在,這整個事情的作品完美的前兩種情況,但第三個「餐飲」改變了這個錯誤:
警告:mysql_fetch_assoc():提供的參數不是一個有效的MySQL結果資源...上線78 78
線是while()
底部。我已經檢查並進行了雙重檢查,無法確定問題所在。這裏的DB結構「餐館」:
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
有誰看到我在做什麼錯在這裏?我正在通過「用餐」功能,正如我之前所說,交換機中的前兩種情況正常工作。
我敢肯定,這是愚蠢的東西...
一個小竅門:因爲你知道,其他兩個開關情況下工作;提取有問題的代碼並嘗試使用最小的可能的錯誤因素。完成之後,編輯您的答案,以便我們可以專注於代碼中有問題的部分(如果您仍然需要它,那通常是您可以自己查看的方式:))。乾杯。 – chelmertz 2010-03-08 20:43:24
這沒有幫助回答你的問題,但有3個相同的表只是不同的名稱似乎很愚蠢。你可以很容易地使用另一列,例如'type'或'type_id'來區分。另外,'SELECT * ...'是邪惡的。 http://www.parseerror.com/sql/select%2Aisevil.html – 2010-03-08 20:43:52