dongzj2015 2012-06-30 13:51
浏览 167
已采纳

SQL where子句不起作用

I'm here again, with a problem. This is my code:

$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>';   
}

The problem is, all the records in the database where subpagina = 0 will be echoed on the page. But, if I use another string like 3 in the database, and in this code, it doesn't work.

I have done some thing like var_dump $row, var_dump(erroinfo()), but it only returns FALSE.

I hope you can help me.

EDIT: here is my data structure:

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: here is the data

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

I'm not sure if you mention this?

  • 写回答

3条回答 默认 最新

  • dpw43061 2012-06-30 13:55
    关注

    You mentioned it is a string. Try

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

    Fiddled a limited set of your table. Added some data and the above SELECT simply works. So that's not the problem. Are you sure you have other strings than '0' in the subpagina field?

    See this sqlfiddle

    Another thing you can try is

    There's no such thing as subagine = 3 in your data. Only 0 and 2 exist

    $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 + "
    ";
    }
    

    EDIT

    See it only just now: you do a fetch() assing it to $row and check the count. Then you start the while loop wiht anohter fetch() which will get the NEXT row of the result. The first one is skipped always because of the first fetch()

    use something like this:

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

    if you not want the empty <ul> tags you should check if count($rows) > 0 before you echo/foreach/echo

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何通过交互分析得出某高危患者对放疗获益更多
  • ¥15 相关性分析中,p<0.05, r=0.29,怎么评价相关性呢
  • ¥15 docker部署Mongodb后输入命令报错?
  • ¥15 将下列流程图转变成python程序代码
  • ¥15 我需要全国每个城市的最新小区名字等数据。
  • ¥15 开发一个小区生态的小程序
  • ¥15 如何解决Excel中dependent dropdown list 的问题
  • ¥15 MddBootstrapInitialize2失败
  • ¥15 LCD Flicker
  • ¥15 esp32在micropython环境下使用ssl/tls连接mqtt服务器出现以下报错Connected on 192.168.154.223发生意外错误: 5无法连接到 MQTT 代理,如何解决?