sql >> データベース >  >> RDS >> Mysql

プリペアドステートメントを使用してSQL_CALC_FOUND_ROWS値を取得するにはどうすればよいですか?

    なんとか理解できたので、将来興味のある人のために、以下に私の答えを詳しく説明します。

    元のコード

    $query="select SQL_CALC_FOUND_ROWS id,title,location,salary,employer from jobs where region=38 limit 0,3";
    
    if($stmt = $connection->prepare($query)) {
            $stmt->execute()or die($connection->error); //execute query
            $stmt->bind_result($id,$title,$location,$salary,$employer,$image);
            while($stmt->fetch()){
                $jobs[$x]['id']=$id;
                $jobs[$x]['title']=$title;
                $jobs[$x]['location']=$location;
                $jobs[$x]['salary']=$salary;
                $jobs[$x]['employer']=$employer;
                $jobs[$x]['image']=$image;
                $x++;
            }
            $stmt->close();//close statement
        }
    

    更新されたコード

    $query="select SQL_CALC_FOUND_ROWS id,title,location,salary,employer from jobs where region=38 limit 0,3";
    
    if($stmt = $connection->prepare($query)) {
            $stmt->execute()or die($connection->error); //execute query
            $stmt->bind_result($id,$title,$location,$salary,$employer,$image);
            while($stmt->fetch()){
                $jobs[$x]['id']=$id;
                $jobs[$x]['title']=$title;
                $jobs[$x]['location']=$location;
                $jobs[$x]['salary']=$salary;
                $jobs[$x]['employer']=$employer;
                $jobs[$x]['image']=$image;
                $x++;
            }
                //get total number of rows.
                $query="SELECT FOUND_ROWS()";
                $stmt = $connection->prepare($query);
                $stmt->execute();
                $stmt->bind_result($num);
                while($stmt->fetch()){
                    $count=$num;
                }
    
            $stmt->close();//close statement
        }
    

    おそらく別の方法でそれをより良くすることができますが、オンラインのどこにも良い例を見つけることができなかったようで、これはうまくいきます!



    1. MySQL-既存のデータを壊さずにデータベース内の既存の列のvarcharサイズを増やす方法は?

    2. SQLインジェクションとは何ですか?

    3. Androidアプリはオンラインのmysqlデータベースに直接接続できますか

    4. GrailsとMySQL接続の例外