MySQL:通过 if 语句选择奇数行

Posted

技术标签:

【中文标题】MySQL:通过 if 语句选择奇数行【英文标题】:MySQL: Select odd row by if-statement 【发布时间】:2017-08-13 21:28:28 【问题描述】:

我的网站上有一个简短的 mysql-Query:

...

for($i=0;$i<$sql->getRows();$i++) 
    $id = $sql->getValue("id");
    $name = $sql->getValue("name");

有没有办法通过 if 语句获取查询中的每一个奇数行(每第二行!)?

例如

for($i=0;$i<$sql->getRows();$i++) 
    $id = $sql->getValue("id");
    $name = $sql->getValue("name");

    if(ROW = ODD) 
        // DO SOMETING
     else 
        // DO SOMETING ELSE
    

【问题讨论】:

你是如何定义奇数行的? php test if number is odd or even的可能重复 表格中每隔一行。 您的代码似乎没有多大意义。我假设一个名为 getRows() 的方法会从查询中获取所有结果集,但您没有处理结果数组 【参考方案1】:

假设奇数是一个数字,当它被 2 除时不能返回整数,您可以尝试这样的操作:

/**
 * 
 * @param int $rowNumber
 * @return bool event number
 */
function isEven($rowNumber)
    $r = $rowNumber/2;
    return ctype_digit((string) $r);  


for($i=0;$i<$sql->getRows();$i++)

    if(isEven($i))
        //do even code access the rowdata with ro
    
    else
        //do odd code
        

ctype_digit() 如果字符串中的所有字符都是数字,则返回 true。如果它是奇数,则结果将包含小数点,因此返回 false。

根据@DrKey 的评论,他是对的,更简洁的 isEven 函数看起来像

/**
 * 
 * @param int $rowNumber
 * @return bool event number
 */
function isEven($rowNumber)
    return $rowNumber % 2 == 0;

【讨论】:

您每行将$i 增加两次,isEven 函数可以简单地为return $rowNumber % 2 == 0 啊,是的,我的错误是我最初将它放在 foreach 循环中,所以手动进行增量。当我把它改回 for 循环时,我忘了删除那个增量

以上是关于MySQL:通过 if 语句选择奇数行的主要内容,如果未能解决你的问题,请参考以下文章

表行字段的Mysql if else语句

我可以从 mysql 命令行运行 IF 语句吗? v 5.6

PHP:如何让我的 IF 语句与 PDO 选择一起使用?

C语言学习--分支和循环语句

用php语句,怎么写100以内的奇数和,

(专题三)02-1 程序和程序设计流程-选择结构