그래서 3 개의 DB 테이블은 테이블의 이름을 제외하고 모든면에서 동일합니다 (데이터가 다릅니다). 그래서 내가 지금 같은 스위치를 사용하여 하나의 코드를 사용할 수 있습니다 이런 짓을 :mysql_fetch_array() problem
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() : 인수 공급은 78
라인 (78)은 맨 아래에있는 while()
입니다 라인에 ... 유효한 MySQL의 결과 리소스 아니다. 나는 체크하고 두 번 체크하고 문제가 무엇인지 알 수 없다. 여기에 '레스토랑'을위한 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
내가 여기서 잘못하고있는 것을 누구가 볼 수 있습니까? 함수에 "식사하기"를 전달하고 이전에 말했듯이 스위치의 처음 두 경우가 제대로 작동합니다. 당신은 관계없이 유효한 SQL로 설정되어 있는지의 $bestof_query
을 실행 -
나는 쿼리 코드에서
팁 : 당신이 다른 두 스위치의 경우 작동하는지 알고 있기 때문에, 문제가있는 코드를 추출하고 가능한 최소한의 오류 요인으로 시도해보십시오. 코드를 수정 한 후에는 코드의 문제가있는 부분에 집중할 수 있도록 답변을 수정하십시오 (여전히 필요하다면 일반적으로 직접 볼 수있는 방법입니다 :)). 건배. – chelmertz
다른 질문이 있으시면 3 개의 동일한 테이블을 사용하는 것이 어리석은 것처럼 보일 것입니다. 차별화를 위해'type' 또는'type_id '와 같은 다른 열을 사용하면됩니다. 또한,'SELECT * ...'는 악마이다. http://www.parseerror.com/sql/select%2Aisevil.html –