簡體   English   中英

PHP驗證以檢查記錄是否存在

[英]PHP validation to check if record exists

我正在嘗試為表單創建驗證。 當用戶填寫表單時,它應該運行一組查詢。 第一種是檢查表中是否已存在記錄。 如果確實存在,則不需要運行接下來的兩個查詢,即INSERT和UPDATE。

我不確定自己在做什么錯,但是該表已經有一個現有記錄。 檢查表后,它仍然運行INSERT和UPDATE查詢。 他們不應該開火。 它不應該做任何事情。

這是我的代碼: *我從for循環開始我的代碼,該循環只是獲取用戶手動選擇的BOL數字和CONTAINER數字的數組。 我分解了數組,但由於在這種情況下不需要顯示代碼,因此我不會顯示該代碼*

<?php 
for($i = 0; $i < $count; $i++)
{
 $bolService = $bolArray[$i];
 $conService = $conArray[$i];

 $checkService = "SELECT * FROM import_service WHERE bol = '" . $bolService . "' AND container = '" . $conService . "'";
 $checkSerRes = mysql_query($checkService);
 $checkSerNum = mysql_num_rows($checkSerRes);

 if($checkSerNum > 0)
 {
   $successService = false;
 }
 elseif($checkSerNum = 0)
 {
   $sql_query_string = mysql_query
   ("INSERT INTO import_service (bol, container) VALUES ('$bolService','$conService')");

   $updateService = mysql_query ("UPDATE import_dispatch_details SET SERVICE = 'Y'
    WHERE BOL_NUMBER = '$bolService' AND CONTAINER = '$conService')");

   $successService = true;
 }
}

// javascript fires an ALERT message in this next set of code

if($successService = true)
{
 echo ("<script language='javascript'>
        window.alert('Record has been saved')
        window.location.href=''
        </script>");
}
// if checkSerNum > 0, then it should skip the INSERT and UPDATE and fire the code below
elseif($successService = false)
{
 echo ("<script language='javascript'>
        window.alert('There was an error saving the record')
        window.location.href=''
        </script>");
}       
?>

我不確定為什么這不能正常工作。 我需要此驗證才能工作。 我確定還有另一種方法,但這就是我得到的。

請幫助我完成這項工作。

先感謝您。

elseif($checkSerNum = 0)需要為elseif($checkSerNum == 0)

您目前正在做一項作業,而不是進行比較。

包括if($successService = true)elseif($successService = false)因此添加另一個=符號。

將錯誤報告添加到文件頂部,這將在生產測試期間提供幫助。

error_reporting(E_ALL);
ini_set('display_errors', 1);

腳注:

mysql_*函數棄用通知:

http://www.php.net/manual/en/intro.mysql.php

自PHP 5.5.0起不推薦使用該擴展,不建議編寫新代碼,因為將來會刪除該擴展。 相反,應使用mysqliPDO_MySQL擴展名。 另請參見MySQL API概述,以獲取選擇MySQL API時的更多幫助。

這些功能使您可以訪問MySQL數據庫服務器。 有關MySQL的更多信息,請參見» http://www.mysql.com/

可以在» http://dev.mysql.com/doc/中找到MySQL的文檔。

這不是很有效(您正在從表中選擇* ,而不使用它-浪費內存嗎?)。 你為什么不做這樣的事情:

for ($i = 0; $i < $count; $i++)
{
    $bolService = $bolArray[$i];
    $conService = $conArray[$i];

    $recordExists = false;
    $result = mysql_query("SELECT COUNT(*) AS recordCount FROM import_service WHERE bol = '" . $bolService . "' AND container = '" . $conService . "'");
    if ($result) {
        $row = mysql_fetch_assoc($result);
        $recordExists = ($row['recordCount'] >= 1);
    }

    if ($recordExists)
    {
        $successService = false;
    }
    else
    {
        $sql_query_string = mysql_query
        ("INSERT INTO import_service (bol, container) VALUES ('$bolService','$conService')");

        $updateService = mysql_query
        ("UPDATE import_dispatch_details SET SERVICE = 'Y' 
        WHERE BOL_NUMBER = '$bolService' AND CONTAINER = '$conService')");

        $successService = true;
    }
}

PS mysql_*已正式棄用。 請使用PDOMySQLi 另外,您的代碼可能會向SQL Injection開放。

暫無
暫無

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

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