【问题标题】:Check empty select in sqlite?检查sqlite中的空选择?
【发布时间】:2012-02-05 11:21:55
【问题描述】:

如何查看我的查询结果?我试试这个,但是当结果为空时 - 不显示错误。

$result = sqlite_query($db, "SELECT * FROM catalog WHERE cat=".$_GET["cat"]." AND size".$size.""); 
        if($result !== 0) {
            while ($row = sqlite_fetch_array($result)) { 
                echo '<img src="'.$row['img1'].'" alt="'.$row['id'].'" />'."\r\n"; 
            } 
        } else {
            err2();
        }

【问题讨论】:

    标签: php sql sqlite


    【解决方案1】:

    请注意,sqlite_fetch_array() 返回的是结果句柄,而不是行数,因此您不应将其与零进行比较:

    此函数将返回结果句柄或失败时返回 FALSE。

    使用sqlite_num_rows() 确定返回的行数,例如

    if(sqlite_num_rows($result) !== 0) {
      ...
    } else {
      ...
    }
    

    请注意,您不应通过将用户提供的数据直接合并到 SQL 查询中来使用它,因为这允许SQL injection attacks。此外,请确保数据库的内容,特别是 img1id 列中的值已正确转义,否则您可能会受到 XSS attacks 的攻击。

    【讨论】:

      【解决方案2】:

      您可以使用 sqlite_num_rows() 函数检查返回的行数

      http://www.php.net/manual/en/function.sqlite-num-rows.php

      【讨论】:

        【解决方案3】:

        关注http://php.net/manual/en/function.sqlite-num-rows.php

        $rows = sqlite_num_rows($result);
        

        如果结果为空,$rows 将为 0

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-06
          • 1970-01-01
          • 1970-01-01
          • 2013-09-17
          • 2014-04-29
          • 1970-01-01
          相关资源
          最近更新 更多