dqprf0976 2016-08-05 09:59 采纳率: 100%
浏览 45
已采纳

如果数据库中没有值我收到错误

for some reason this works just fine on wamp but if put it on shared host i get the following error message, to some extent i guess its because there is no records in db so negative value is being passed and this is happening only if database is empty.

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1210 Incorrect arguments to mysqld_stmt_execute

i tried var_dump and this is the output

var_dump($offset);
var_dump($per_page);
var_dump($uid);

float(-10) 
int(10) 
int(4)

here is my coding

$query = "SELECT COUNT(*) FROM applied WHERE memberID = :memberID";
        $stmt = $db->prepare($query);
        $stmt->bindParam(':memberID', $uid, PDO::PARAM_INT);
        $stmt->execute();
        $total = $stmt->fetchColumn();    

$pages = ceil($total / $per_page);

$page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array(
'options' => array(
'default'   => 1,
'min_range' => 1,
),
)));

$offset = ($page - 1)  * $per_page; 

$query = "SELECT * FROM applied WHERE memberID = :memberID ORDER BY id DESC LIMIT :per_page OFFSET :offset";

         $stmt = $db->prepare($query);
         $stmt->bindParam(':per_page', $per_page, PDO::PARAM_INT);
         $stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
         $stmt->bindParam(':memberID', $uid, PDO::PARAM_INT);
         $stmt->execute();

$result = $stmt->fetchAll();

thanks in advance, appreciate your time

  • 写回答

1条回答 默认 最新

  • duanpuchen3142 2016-08-05 10:07
    关注

    Please replace php code with these

    $query = "SELECT COUNT(*) FROM applied WHERE memberID = :memberID";
            $stmt = $db->prepare($query);
            $stmt->bindParam(':memberID', $uid, PDO::PARAM_INT);
            $stmt->execute();
            $total = $stmt->fetchColumn();    
    
    $pages = ceil($total / $per_page);
    
    $page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array(
    'options' => array(
    'default'   => 1,
    'min_range' => 1,
    ),
    )));
    
    $offset = ($page - 1)  * $per_page; 
    if($offset < 0){
    $offset = 10;
    }
    $query = "SELECT * FROM applied WHERE memberID = :memberID ORDER BY id DESC LIMIT :per_page OFFSET :offset";
    
             $stmt = $db->prepare($query);
             $stmt->bindParam(':per_page', $per_page, PDO::PARAM_INT);
             $stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
             $stmt->bindParam(':memberID', $uid, PDO::PARAM_INT);
             $stmt->execute();
    
    $result = $stmt->fetchAll();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 three.js添加后处理以后模型锯齿化严重
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常