将SQL查询中的行数存储为变量

时间:2016-05-12 19:13:06

标签: php mysql

我正在尝试编写一些运行SQL查询的PHP,然后计算查询返回的行数并将其存储,以便我可以在if语句中使用它。目前我出于调试原因将数字输出到屏幕上,它总是输出为0,而当我直接在数据库中运行查询时,它返回超过600行。这是为什么?

private int airplaneSeatConstructor(Airplane airplane, String className, int numberOfSeats){
    /*Airplane Seat Creator, loops through the seats and attaches credentials to them based on the type of plane
    * being formed.*/

    //currently only one plane type. 777.
    //777 seat number 257
    //does have a first class section.
    System.out.println("iteration");
    if(className.equals("TERM")){
        return 1;
    }else {
        if (className.equals("FIRST")) {
            for (int x = 0; x < numberOfSeats; x++) {
                airplane.getSeats()[x].setOccupied(false);
                airplane.getSeats()[x].setFirstClass(true);
                airplane.getSeats()[x].setBusinessClass(false);

                if ((x % 4) == 0 || (x % 4) == 3) {
                    airplane.getSeats()[x].setWindowseat(true);
                    airplane.getSeats()[x].setAisleSeat(false);
                } else {
                    airplane.getSeats()[x].setAisleSeat(true);
                    airplane.getSeats()[x].setWindowseat(false);
                }
            }
            System.out.println("in first");
            airplaneSeatConstructor(airplane, "BUSINESS", 40);
        }
        if (className.equals("BUSINESS")) {
            for (int x = 0; x < numberOfSeats; x++) {
                airplane.getSeats()[airplane.getNumberOfSeatsPerClass()[0] + x].setBusinessClass(true);
                airplane.getSeats()[airplane.getNumberOfSeatsPerClass()[0] + x].setFirstClass(false);
                airplane.getSeats()[airplane.getNumberOfSeatsPerClass()[0] + x].setOccupied(false);
            }
            System.out.println("in business");
            airplaneSeatConstructor(airplane, "ECONOMY", 209);
        }
        if (className.equals("ECONOMY")) {
            for (int x = 0; x < numberOfSeats; x++) {
                airplane.getSeats()[airplane.getNumberOfSeatsPerClass()[0] + airplane.getNumberOfSeatsPerClass()[1] + x].setBusinessClass(false);
                airplane.getSeats()[airplane.getNumberOfSeatsPerClass()[0] + airplane.getNumberOfSeatsPerClass()[1] + x].setFirstClass(false);
                airplane.getSeats()[airplane.getNumberOfSeatsPerClass()[0] + airplane.getNumberOfSeatsPerClass()[1] + x].setOccupied(false);
            }
            System.out.println("in economy");
            airplaneSeatConstructor(airplane, "SPECIAL", 26);
        }
        if (className.equals("SPECIAL")) {
            System.out.println("in special");
            airplaneSeatConstructor(airplane, "TERM", 273);
        }
    }
    return 0;
} 

感谢任何帮助

3 个答案:

答案 0 :(得分:1)

  

...它总是输出为0,而当我直接在数据库中运行查询时,它返回超过600行。

问题在于这个陈述,

$row_cnt = $result->mysql_num_rows;

应该是,

$row_cnt = $result->num_rows;

以下是参考资料:

答案 1 :(得分:1)

您可以使用以下解决方案:

$counter = mysql_query("SELECT COUNT(*) AS cnt FROM `bets` WHERE `user` = '76561198223084096'") ;
$num = mysql_fetch_array($counter);
$row_cnt= $num["cnt"];
printf("Result set has %d rows.\n",$row_cnt);

答案 2 :(得分:0)

$result = $db->query("select count(*) as c from `bets` WHERE `user` = '76561198223084096'");
$count = $result->fetch_object()->c;

echo "Result set has {$count} rows ";