【问题标题】:Wrong SQL Result Condition错误的 SQL 结果条件
【发布时间】:2014-05-30 13:07:26
【问题描述】:

我在一些代码中遇到了一点问题,其中有一个查询应该返回 false 并且它返回 true。

首先我有一个对不存在的 id 的 sql 查询:

$result = mysqli_query($con,"SELECT * FROM myTable WHERE id='1' "); //There no id with value of 1

然后我添加了一个 var_dump 来查看发生了什么:

var_dump($result);

在一个条件之后:

if ($result==0) {
  echo 'No results where found';
} else {
  echo 'Some results where found';
}

这是 var_dump 的结果

object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(12) ["lengths"]=> NULL ["num_rows"]=> int(0) ["type"]=> int(0) } 

找到的一些结果

结果应该是:No results where found,正如你在上面看到的,它返回:Some results where found

我在这里做错了什么?

【问题讨论】:

  • 您的结果和表格没有意义。如果您正在执行 SELECT *,您应该拥有所有字段,但是 ID 甚至不是您的结果集的一部分。
  • 你在哪里看到表信息@azngunit81?
  • 结果集只是一个资源对象,要从结果集中获取行,您使用 mysqli_fetch_array/assoc .. 而且我认为您得到的是空结果集。

标签: php mysqli


【解决方案1】:

您需要mysqli_num_rows() 来查看查询是否有一些行

$count=mysqli_num_rows($result);
if($count == 0){
 // no result
}else{
 // there is data and do whatever you want
}

查看mysqli_query()的文档和返回部分 http://in2.php.net/mysqli_query

失败时返回 FALSE。对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询 mysqli_query() 将返回一个 mysqli_result 对象。为了 其他成功的查询 mysqli_query() 将返回 TRUE。

【讨论】:

    【解决方案2】:

    我认为您的id 字段是integer,所以:

    SELECT * FROM myTable WHERE id=1
    

    应该工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      相关资源
      最近更新 更多