1

簡単な質問DBを作成しています。開始する詳細は次のとおりです。

まず、私はPDOを使用していません。これは古いWebアプリであり、この質問はPDOへのアップグレードに関するものではありません。

DB

CREATE TABLE IF NOT EXISTS `questions` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `question` varchar(255) NOT NULL,
  `userID` int(11) unsigned NOT NULL,
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

すでにDB内:

INSERT INTO `apl_questions` (`id`, `question`, `userID`, `active`) VALUES
(1, 'Do you have a dog?', 1, 1),
(2, 'Have you ever been arrested?', 1, 1),
(3, 'Pick yes or no...', 1, 1);

PHP

$questionsResult = mysql_query("select * from questions where userID = 1 AND active = 1"); // Get all activated questions
    if(mysql_num_rows($questionsResult) > 0){
        $questions = mysql_fetch_assoc($questionsResult);
        var_dump($questions);
    }

(PHPの)結果

array(4) { ["id"]=> string(1) "1" ["question"]=> string(18) "Do you have a dog?" ["userID"]=> string(1) "1" ["active"]=> string(1) "1" } 

ご覧のとおり、これは最初の行のみを取得しています。3行すべてのuserIDと「アクティブ」列が1であるため、すべての行を取得する必要があります。この問題の原因となる可能性のあるものがここに表示されますか?クエリをPHPMyAdminに入れると、クエリは正しく機能します。したがって、この時点で、それがPHPであると想定する必要があります...これは私の心を吹き飛ばします!

ありがとう。

4

2 に答える 2

2

mysql_fetch_assocは行フェッチであり、一括フェッチとは反対のようです。つまり、特定の配列内の行ごとに行をフェッチします。

たとえば、phpページでループする必要があります。

while ($row = mysql_fetch_assoc($result)) {
   echo $row["userid"];
   echo $row["fullname"];
   echo $row["userstatus"];
}

rgds。

于 2012-06-24T15:47:56.550 に答える
0

試す:

$questionsResult = mysql_query("select * from questions where userID = 1 AND active = 1"); // //Get all activated questions
if(mysql_num_rows($questionsResult) > 0){
    while($questions = mysql_fetch_assoc($questionsResult)){
      var_dump($questions);
    }
 }
于 2012-06-24T15:47:43.947 に答える