我又来了,有问题。这是我的代码:
$sql = "SELECT * FROM paginas WHERE subpagina='0'";
$q = $con->prepare($sql);
$q->execute();
$q->setFetchMode(PDO::FETCH_ASSOC);
$row = $q->fetch();
if (count($row) != "0")
{
echo '<ul>';
while($row = $q->fetch())
{
echo '<li><a href="?page='. $row['ID'] . '">' . $row['pagina'] .'</a></li>';
}
echo '</ul>';
}
问题是,数据库中subpagina = 0
将在页面上回显的所有记录。但是,如果我在数据库中使用另一个类似3的字符串,并且在此代码中,它不起作用。
我做过var_dump $row
,var_dump(erroinfo())
之类的事情,但它只返回FALSE
。
我希望你能帮助我。
编辑:这是我的数据结构:
CREATE TABLE IF NOT EXISTS `paginas` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`pagina_link` varchar(150) NOT NULL,
`content` varchar(10000) NOT NULL,
`pagina` varchar(100) NOT NULL,
`reactie` varchar(1) NOT NULL,
`subpagina` varchar(11) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=39 ;
EDIT2:这是数据
INSERT INTO `paginas` (`ID`, `pagina_link`, `content`, `pagina`, `reactie`, `subpagina`) VALUES
(32, '?pagina=Home', '<h1>Welkom!</h1><div>Dit is een demo van het cms combora! Je mag hier op uittesten. Je kan inloggen met als gebruikersnaam demo en paswoord demo. Gelieve deze pagina niet te verwijderen.</div><div><br></div> <a href="?pagina=Home&foto=2&l=j"><img width="250px" height="250px;" src="fotos/foto2.jpg"></a>', 'Home', '1', '0'),
(33, '?pagina=test1', '<br>dslmlmqdhfkqsjdf', 'test1', '1', '0'),
(34, '?pagina=test2', '<br>', 'test2', '0', '0'),
(35, '?pagina=Nice', 'fasdfdsfadsf<br>', 'Nice', '1', '0'),
(36, '?pagina=Foto viewer ', 'Deze pagina is een test van de zelfgemaakt foto viewer:<div><br></div>\r\n<a href=\\"?foto=1&l=j\\"><img width=\\"250px\\" height=\\"250px;\\" src=\\"1.jpg\\"></a>\r\n<a href=\\"?foto=2&l=j\\"><img width=\\"250px\\" height=\\"250px;\\" src=\\"2.jpg\\"></a>\r\n<a href=\\"?foto=3&l=j\\"><img width=\\"250px\\" height=\\"250px;\\" src=\\"3.jpg\\"></a><div><br></div>', 'Foto viewer ', '1', '0'),
(38, 'sdkjfqsdfj', 'sdjmkqjfdmlkqsfdlmkqjsdflkjdlmskfjqslmdkfj', 'test56', '1', '2\r\n');
我不确定你是否提到这个?
答案 0 :(得分:5)
你提到它是一个字符串。尝试
$sql = "SELECT * FROM paginas WHERE subpagina='0'";
摆弄一桌有限的桌子。添加了一些数据,上面的SELECT只是起作用。所以这不是问题。您确定'0'
字段中的其他字符串不是subpagina
吗?
请参阅此sqlfiddle
你可以尝试的另一件事是
数据中没有subagine = 3这样的东西。只存在0和2
$row = $q->fetchAll();
print_r($row);
/* print_r shows Array only */
/* loop the array and print the values */
foreach($row as $key => $value)
{
echo $key + " " + $value + "\r\n";
}
修改强>
仅在刚才看到它:你fetch()
向$row
做出贡献并检查计数。然后用anohter fetch()
启动while循环,它将获得结果的NEXT行。第一个被跳过,因为第一个fetch()
使用类似的东西:
$rows = $q->fetchAll();
echo '<ul>';
foreach($rows as $value)
{
echo '<li><a href="?page='. $value['ID'] . '">' . $value['pagina'] .'</a></li>';
}
echo '</ul>';
如果您不想要空的<ul>
标记,则应在echo / foreach / echo之前检查count($rows) > 0
是否
答案 1 :(得分:1)
在您发布的数据中,我看到subpagina
实际上是VARCHAR
字段,而不是数字字段,其值为2\r\n
。您可以通过多种方式解决此问题:
SELECT ... WHERE subpagina LIKE '2%'
匹配字符串2
,后跟其他任何内容\r\n
INTEGER
代替VARCHAR
答案 2 :(得分:0)
我不知道你为什么使用字符串来存储看似整数的东西,但你遇到的问题是'2\r\n'
!== 2
。
如果您想查找'2\r\n'
,则需要查找相应内容或使用LIKE
条件。