PDO - 空结果测试

时间:2018-04-06 13:53:23

标签: php mysql pdo

我有一个应该查找条目的查询。如果它不在数据库中,则输入数据。否则它返回数据,他们可以更新任何字段。如果有一个条目,它将只有一个。如果条目在表中,这非常有用。但我已经尝试检查空行,执行row_count等,但似乎没有用。现在我只是在代码中有这个(清理以删除公司表信息):

$query1  = " SELECT Number, Notes, Qty1, Qty2  FROM test.notes ";
$query1 .= " WHERE Number = '$searchnumber' ";

$result1 = $conn1->query($query1);
    $conn1 = null;
    if($result1==null)
    {
        echo "Result is null</p>\n";
        return 0;
    }
    else
    {           
        echo "Result is not null</p>\n";
        return $result1;
    }

如果我拿出if检查我似乎回来的是,如果发现它正确返回值。如果没有找到,结果似乎是查询字符串本身。检查不起作用。可能是因为如果找不到它,它会返回查询字符串。

我知道这很简单,但还没找到。

3 个答案:

答案 0 :(得分:0)

// if available  in  database
   $query="SELECT Number, Notes, Qty1, Qty2  FROM test.notes WHERE Number='".$searchnumber."'";
    $qnt =   $conn1->query($query);
     $coun = count($qnt->fetchAll());

          if($coun > 0){
        // available 
         echo "Result is available</p>\n";

          }else{
            //not available
            echo "Result is not available</p>\n";

          }

我认为你需要这样的东西。

如果这不能正常工作,请尝试另一种方法

 $queryi = $conn1->prepare("SELECT Number, Notes, Qty1, Qty2  FROM test.notes WHERE Number='".$searchnumber."' ");

             $queryi->execute();
            $qn=  $queryi->fetchAll(PDO::FETCH_ASSOC);



            foreach ($qn as $row => $data) {

                 $in_use = $data['Number'];

               //echo $in_use ;


              }

           // evaluate
           if($in_use == NULL){
              //not avilable

            }else{
            // available

             }

答案 1 :(得分:0)

我建议做这样的事情:

建立您的查询

$query1  = " SELECT Number, Notes, Qty1, Qty2  FROM test.notes ";
$query1 .= " WHERE Number = '$searchnumber' ";

查看是否有查询结果,没有错误

if ($res = $conn1->query($sql)) {

    /* Check the number of rows that match the SELECT statement */
  if ($res->fetchColumn() > 0) {

        /* Issue the real SELECT statement and work with the results */
         $sql = "SELECT name FROM fruit WHERE calories > 100";
       foreach ($conn->query($sql) as $row) {
           print "Name: " .  $row['NAME'] . "\n";
         }
    }
    /* No rows matched -- do something else */
  else {
      print "No rows matched the query.";
    }
}

答案 2 :(得分:0)

经过一些试验和错误后我才开始工作:

    $result1 = $conn1->query($query1);
    $count = $result1->fetchColumn();
    if($count == "")
    {
    //          echo "Result is null</p>\n";
        return "0";
    }
    else
    {           
    //          echo "Result is not null</p>\n";
        $result1 = $conn1->query($query1);
        return $result1;
    }

我必须将设置更改为包括:

$conn1->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, TRUE);

可能不是一个干净的方式,但它现在有效。感谢您的帮助。