【问题标题】:How do I port this depreciated mysql script to mysqli [duplicate]如何将此折旧的 mysql 脚本移植到 mysqli [重复]
【发布时间】:2017-02-19 21:58:03
【问题描述】:

我之前发布了这个脚本来修复分页错误,现在我需要更新它以摆脱贬值的 mysql,但我遇到了 ceil(mysql_result) 和 mysql_fetch_assoc($query) 部分的问题。

$per_page = 25;
$pages_query = mysql_query("SELECT count(*) FROM my_db WHERE StartDate >= CURDATE()");
$pages = ceil(mysql_result($pages_query, 0) / $per_page);
$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
$start = ($page - 1) * $per_page;
$query = mysql_query("SELECT *, DATE_FORMAT(StartDate, '%d/%m/%Y') StartDate, CompName, HostState, Location,  competitiontypedesc FROM my_db WHERE StartDate >= CURDATE() LIMIT $start, $per_page"); 

while($query_row = mysql_fetch_assoc($query)) {
echo"
<li class='kleo-masonry-item event-item'> 
    <div class='member-inner-list animated animate-when-almost-visible bottom-to-top start-animation grey-border'> 
        <div class='event-cell event-date-cell'>
            <p class='no-margin'>" . $query_row["StartDate"] . "</p>
        </div>
        <div class='event-cell name'>
            <p class='no-margin'>" . $query_row["CompName"] ." " .$query_row["LastName"]. "</p>
        </div>
        <div class='event-cell'>
            <p class='no-margin'>" . $query_row["Location"] . "</p>
        </div>
        <div class='event-cell'>
            <p class='no-margin'>" . $query_row["HostState"] . "</p>
        </div>
</li>
"
;   
}
            $prev = $page - 1;
            $next = $page + 1;

            if(!($page <= 1)){
            echo "<a href='?page=$prev'><</a> ";}

            if($pages >= 1){
            for($x=1; $x<=$pages; $x++){
            echo ($x == $page) ? '<b><a href="?page='.$x.'">'.$x.'</a></b> ' : '<a href="?page='.$x.'">'.$x.'</a>';}
            }

            if(!($page >= $pages)){
            echo "<a href='?page=$next'>></a> ";}
            }
            }

【问题讨论】:

  • 我在您的代码中没有看到任何 mysqli 尝试。
  • 嗨 Phiter,我忽略了对 mysqli 的尝试,因为我只更改了 db 连接和以下查询,非常基本了解切换到 mysqli $pages_query = mysqli_query("SELECT count(*) FROM my_db WHERE StartDate >= CURDATE()");

标签: php mysql mysqli port


【解决方案1】:

习惯于清楚地命名变量:$pages_query 应该是 $pagesResultset。 这就是本质:

$dbCon = new mysqli(host,user,pas,db);
$resultset = $dbCon->query("select ...");
if($resultset->num_rows == 0) die('issues');
$pageSize = 25;
$pageCount = ceil($resultset->num_rows / $pageSize);
while($row = $resultset->fetch_assoc()) {
    /* do something */
}
$dbCon->close();

【讨论】:

  • 附录:为了你自己,切换到 twig 或任何其他模板引擎,否则你会在 6 个月内讨厌自己。需要 1 小时了解如何使用它,它可以节省夜间的眼泪和拉扯的头发。
  • 感谢 Paul,让这个工作正常,但是我没有考虑分页代码,并且在让它正常工作时遇到问题。分页看起来像这样 $prev = $page - 1; $next = $page + 1; if(!($page ";} if($pages >= 1){ for($x=1; $x'.$x.' ' : ''.$x.'';} } if(!($page >= $pages)){ echo "> " ;} } }
  • 在这里和我一起工作,到底出了什么问题? :) 还有……聪明点,使用 $pagesCount、$nextPageIndex 等……你无法想象一旦你可以像阅读书页一样阅读代码,调试会变得多么容易
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
相关资源
最近更新 更多