php pdo与js分页

时间:2012-03-31 22:09:03

标签: php pdo

首先描述情况。我的索引页面分为两个div区域,其中显示了我的新闻文章。左边和后面的每个部分都有一个分页,因此用户不需要刷新页面。 一切都适用于我的旧代码,现在我将这些旧代码更改为php pdo以防止sql inj。攻击蚂蚁来更新自己:)

基本上一切顺利到现在为止。也许它为时已晚或是别的,这应该是简单的解决方案,因为我已经在页面的左侧使用了解决方案。差异仅在于选择要从中选择文本的字符和类别名称。 这是代码: 工作代码,在页面的左侧部分

$offset = ($pageNum - 1) * $rowsPerPage;
$selectString = '%News-BlockLeft%';
$STH = $DBH->prepare("SELECT ... " .
        "FROM News, Categories, NewsCheck " .  
        "WHERE Name LIKE :selectString " .
        "ORDER BY `NewsDate` DESC LIMIT :offset, :rowsPerPage");  

$STH->bindParam(':selectString ', $selectString, PDO::PARAM_STR);
$STH->bindParam(':offset', $offset, PDO::PARAM_INT);
$STH->bindParam(':rowsPerPage', $rowsPerPage, PDO::PARAM_INT);
$STH->execute();

这些代码将触发onclick js,它将返回第二页,如下所示

if ($pageNum > 1) {
    $opage = $pageNum - 1;
    $prev = "<a href=\"javascript:goToPage(" . $opage . ");\"><img src=\"/firstPage.gif\" /> </a>";
    $first = "<a href=\"javascript:goToPage(" . $opage . ");\">[<<]</a>";
} else {
    $prev = '';  // we're on page one, don't enable 'previous' link
    $first = ' <font size=\"3\">[<<] </font>'; // nor 'first page' link
}

ajaxRequest.js

function goToPage(page) {
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null) {
        alert ("Your browser does not support AJAX!");
        return;
    }
    var url="myPageBlockLeft.php";
    url=url+"?opage="+page;
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete") {
            document.getElementById('contentRight').innerHTML=xmlhttp.responseText;
            initLightbox();
        }
    }
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
}

选择字符串几乎相同,在左侧工作我选择

WHERE Name LIKE :selectString

另一个不起作用的我需要选择Where Name=:selectString

希望问题不是太混乱,因为我很累,如果你需要更多信息,请询问。

1 个答案:

答案 0 :(得分:1)

Dunno您的问题是什么,但WHERE Name='%News-BlockLeft%'条件几乎不会返回任何行。

你需要先在mysql控制台中运行你的查询,看看它们是否正常工作 只有在那之后你才可以开始动态构建它们。

另请注意WHERE Name LIKE '%News-BlockLeft%'是一个巨大的设计缺陷 你必须使用一些不同的参数来指定左侧块新闻,而不是这个自制的字符串比较。