prepare($sql); $q->-6ren">
gpt4 book ai didi

php - SQL where 子句不起作用

转载 作者:行者123 更新时间:2023-11-29 04:10:56 25 4
gpt4 key购买 nike

我又来了,有个问题。这是我的代码:

$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 $rowvar_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&amp;l=j\\"><img width=\\"250px\\" height=\\"250px;\\" src=\\"1.jpg\\"></a>\r\n<a href=\\"?foto=2&amp;l=j\\"><img width=\\"250px\\" height=\\"250px;\\" src=\\"2.jpg\\"></a>\r\n<a href=\\"?foto=3&amp;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');

我不确定你有没有提到这个?

最佳答案

你提到它是一个字符串。尝试

$sql = "SELECT * FROM paginas WHERE subpagina='0'"; 

摆弄了一组有限的 table 。添加了一些数据,上面的 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并检查计数。然后你用另一个 fetch() 开始 while 循环这将获得结果的下一行。第一个总是因为第一个 fetch() 而被跳过

使用这样的东西:

$rows = $q->fetchAll(); 

echo '<ul>';
foreach($rows as $value)
{
echo '<li><a href="?page='. $value['ID'] . '">' . $value['pagina'] .'</a></li>';
}
echo '</ul>';

如果你不想要空的<ul>您应该检查标签 count($rows) > 0在你 echo/foreach/echo 之前

关于php - SQL where 子句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11274580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com