首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP中使用if / else检查SQL查询

问在PHP中使用if / else检查SQL查询
EN

Stack Overflow用户
提问于 2013-09-29 18:59:54
回答 4查看 15.3K关注 0票数 2

我在这方面是一个完全的新手,但试着自己学到很多/教程。然而,我似乎找不到这个(可能)简单问题的答案。如果SQL数据库小于10,我希望检查它的输出,然后给出INT的当前值。如果它还不是10或更多,那么我想输出一行,如果是的话,输出另一行。然而,目前它似乎无法正常工作。

代码语言:javascript
复制
//Connect to DB
$con = mysqli_connect("localhost","root","root","cursuson");
//Get counter!
$getcounter = mysqli_query($con,"SELECT * FROM cursus01");
$cursus01 = mysqli_fetch_assoc($getcounter);

//check if output is less than 10
if(count($cursus01) <= 10)
    echo 'aantal aanmeldingen is ' . $cursus01['counter'] . '<br>';
else 
    echo 'De cursus gaat door! <br>';

//check the output
echo '<b>Aantal aanmeldingen:</b> ' . $cursus01['counter'] . '<br>'; 
echo '<b>ID:</b> ' . $cursus01['id'];
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-29 20:03:00

我假设您正在尝试从数据库中获取行数(就像其他人所做的那样),并留下了答案,如果这是下面的情况。您可能会发现它很有用,删除它似乎是一种浪费!

不管怎么说,从你上面的评论和你问题中的$cursus01['counter']来看,我现在假设你真正想要的是.

解决方案

我建议您使用下面的mysqli方法,因为在不久的将来,mysql将被从语言中删除,因为它是不推荐的!如果您继续使用它并使用它创建站点/应用程序,那么当这种情况最终发生时,您将不得不使用带有自身风险/限制的旧版本的php,或者面临大量的错误代码需要修复……

mysql

代码语言:javascript
复制
mysql_connect("localhost","root","root");
mysql_select_db("cursuson");

$query = mysql_query("SELECT * FROM cursus01");

if(mysql_num_rows($query)){
    //Rows are returned
    while($row = mysql_fetch_assoc($query)){
        //Do stuff with row data
        if($row['counter'] <= 10){
            //Counter is less than or exactly 10
        }
        else{
            //Counter is greater than 10
        }
    }
}
else{
    //No rows were returned
}

米斯里

代码语言:javascript
复制
$mysqli = new mysqli('localhost', 'root', 'root', 'cursuson');

$result = $mysqli->query("SELECT * FROM cursus01"); 

if($result->num_rows;){
    //Rows are returned
    while($row = $result->fetch_assoc()){
        //Do stuff with row data
        if($row['counter'] <= 10){
            //Counter is less than or exactly 10
        }
        else{
            //Counter is greater than 10
        }
    }
}
else{
    //No rows were returned
}

​

​

原始答案

我假设您实际上是在尝试echo返回的行数的计数?您当前的代码echo是库仑数的计数。如果你还不知道,这意味着这里有更大的问题.

解决方案

mysql

代码语言:javascript
复制
mysql_connect("localhost","root","root");
mysql_select_db("cursuson");

$query = mysql_query("SELECT * FROM cursus01");
$count = mysql_num_rows($query);

if($count <= 10){
    //Less than (or exactly) 10 rows were returned
    while($row = mysql_fetch_assoc($query)){
        //Do stuff with row data
    }
}
else if($count > 10){
    //More than 10 rows were returned
    while($row = mysql_fetch_assoc($query)){
        //Do stuff with row data
    }
}
else{
    //No rows were returned
}

米斯里

代码语言:javascript
复制
$mysqli = new mysqli('localhost', 'root', 'root', 'cursuson');

$result = $mysqli->query("SELECT * FROM cursus01");
$count  = $query->num_rows;

if($count <= 10){
    //Less than (or exactly) 10 rows were returned
    while($row = $result->fetch_assoc()){
        //Do stuff with row data
    }
}
else if($count > 10){
    //More than 10 rows were returned
    while($row = $result->fetch_assoc()){
        //Do stuff with row data
    }
}
else{
    //No rows were returned
}
票数 2
EN

Stack Overflow用户

发布于 2013-09-29 19:14:23

你做这件事的方式,每次都是一样的。您将返回数据库中的列数($cursus01),以获取应该使用num_rows函数或执行计数查询的行数,除非您需要查询中的数据,在这种情况下,您应该执行如下操作.

代码语言:javascript
复制
$cursus01 = array();
while($row = mysql_fetch_assoc($getcounter))
    $cursus01[] = $row;

在这种情况下,计数($cursus01)将返回行数。希望我没有混淆你的要求。正如edward所指出的,您应该开始使用mysqli而不是mysql。您还可能需要考虑使用oop而不是过程调用。有关示例这里,请参阅手册

票数 0
EN

Stack Overflow用户

发布于 2013-09-29 19:54:28

同意Bryan的回答,但在对数据库行进行计数时,我会选择使用MySQL计数。在这种情况下,代码行是:

代码语言:javascript
复制
$getcounter = mysql_query("SELECT COUNT(*) FROM cursus01");

您将使用此查询获得确切的行数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19082020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档