簡體   English   中英

執行SELECT查詢並檢查是否返回任何行,以及是否有空結果集執行INSERT

[英]executing a SELECT query and check if any row is returned and if empty resultset do an INSERT

一直遵循我在網上找到的這個php / mysql教程,現在我無法使該查詢正常工作。 我認為選擇查詢返回空結果集后使用插入查詢的問題。

$new_start_no = isset($_POST['start_no']) ? $_POST['start_no'] : '';
$new_end_no = isset($_POST['end_no']) ? $_POST['end_no'] : '';
$new_job_no = isset($_POST['job_no']) ? $_POST['job_no'] : '';

$query = "SELECT COUNT (*)"; 
$query .= "FROM jobs";
$query .= "WHERE job_no=$new_job_no"; 
$query .= "AND start_no <= $new_end_no";
$query .= "AND end_no >= $new_start_no";
$result = mysqli_query($connection, $query);
$num_rows = mysqli_num_rows($result);
if (is_null) { 
$query = "INSERT INTO jobs (";
 $query .= " user_id, start_no, end_no, start_date, client_name, card_type, job_no, job_quantity, end_date, shred_option";
 $query .= ") VALUES (";
 $query .= " '{$user_id}', '{$start_no}', '{$end_no}', '{$start_date}', '{$client_name}', '{$card_type}', '{$job_no}', '{$job_quantity}', '{$end_date}', '{$shred_option}'";
 $query .= ")";
 $result = mysqli_query($connection, $query);
 if ($result) {
// success
   $_SESSION["message"] = "job created.";
   redirect_to("manage_job.php"); 
  } else {
// failure  
   $_SESSION["message"] = "job creation failed.";
   redirect_to("new_job.php");
  }  
}  

您的查詢始終返回准確的1行,因為它使用COUNT(*)對匹配的行進行計數。 您需要檢索該行並從中獲取計數。 您應該為計數分配一個別名,以便可以檢索它。 然后,您需要測試計數,而不是is_null

$query = "SELECT COUNT (*) AS ct"; 
$query .= "FROM jobs";
$query .= "WHERE job_no=$new_job_no"; 
$query .= "AND start_no <= $new_end_no";
$query .= "AND end_no >= $new_start_no";
$result = mysqli_query($connection, $query);
$row = mysqli_fetch_assoc($result);
$num_rows = $row['ct'];
if ($num_rows == 0) {
    // INSERT code
} else {
    $_session["message"] = "job no is not available";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM