繁体   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