我正在创建一个简单的问题DB,这里有一些细节要开始:
第一关,我没有使用PDO - 这是一个旧的webapp,这个问题不是关于升级到PDO。
数据库
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 ;
已经在数据库中:
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和“active”列都是1.任何人在这里看到任何东西可能会导致这个问题?如果我把查询放到PHP MyAdmin中,查询就能正常工作 - 所以我必须假设它是PHP ...这让我大吃一惊!
感谢。
答案 0 :(得分:3)
似乎mysql_fetch_assoc是 row 提取,与 bulk 提取相反,这意味着它将在给定数组中每行获取一行。
你必须循环,例如在php页面中:
while ($row = mysql_fetch_assoc($result)) {
echo $row["userid"];
echo $row["fullname"];
echo $row["userstatus"];
}
RGDS。
答案 1 :(得分: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);
}
}