选定的 mysqli 行

Selected mysqli rows

我在这里尝试做的是 return 如果在我的查询中有选定的行,则 json_encode 消息。我尝试使用 num_rows() 或 mysqli_num_rows() 但它也不起作用。如果没有选定的行,我想 return "failed" 控制台消息。如果在我的查询中选择了一条记录,还有我的数组。有帮助吗?

<?php
if(isset($_POST['code'])) {
    include('connect.php');
    $code= $mysqli->real_escape_string($_POST['code']);

    $sql = $mysqli->query("SELECT * FROM list WHERE pr='$code'");
    while($row = $sql->fetch_assoc())
    {
      $pr= $row['pr'];
      $approved= $row['approved'];
      $requested = $row['requested'];
    }
    if($row->affected_rows >= 1) {
        echo json_encode(array("pr" => $pr,"approved" => $approved, "requested" => $requested));
    } else {
        echo json_encode("failed");  
    }
}
?>
<?php

$userInput = $_POST['code'];

if(isset($userInput)) {
  require('connect.php');
  $code = $mysqli->real_escape_string($userInput);
  $sql  = $mysqli->query("SELECT * FROM list WHERE pr='".$code."'");

  if(!empty($sql)) {
    while($row = $sql->fetch_assoc())
    {
      $pr        = $row['pr'];
      $approved  = $row['approved'];
      $requested = $row['requested'];
    }
    echo json_encode(["pr" => $pr, "approved" => $approved, "requested" => $requested]);
  }
  else echo json_encode("failed");
}