比较从SQL Server数据库问题检索的PHP中的字符串



我正在使用SQL Server数据库,其中我的一个表具有列类型 varchar(max(。在此列中,我正在存储base64字符串。

基本上,应用程序的流量为:

  1. 获取指纹数据。
  2. 将其编码到base64字符串中。
  3. 使用PHP通过检查其存在

    将其存储到SQL Server数据库中

    3a。从数据库中检索所有指纹

    3b。使用从数据库中收到的所有指纹插入指纹数据

    3C。如果有指纹与之匹配,请返回false 如果任何指纹与之匹配,请返回true

  4. 如果返回值是正确的,请插入以下查询的指纹,如果为false,则显示错误。

    INSERT INTO EMPTABLE ( Finger_Data ) values (  CONVERT( VARCHAR(MAX) , 
    $Finger_Data ) )
    

要在第3步中查看指纹,使用以下代码。

 $sqlString = "SELECT  CAST( Finger_Data AS VARCHAR(MAX)) AS FINGER FROM 
 EMPTABLE ";
 $stmt = $this->conn->prepare($sqlString);
            $stmt->execute();
            $data = $stmt->fetchAll();
  if ($stmt->rowCount() > 0) {
     if ($data) {
         foreach ($data as $row) {
                        $found = false;
                        if ($Finger_Data === $row['FINGER']){
                            echo "n >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
                            Duplicate found <<<<<<<<<<<<<<<< 
                            $found = true;
                        }
                        if($found){
                            echo "n >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
                            Implementing found <<<<<<<<<<<<<<<< 
                        }
         }
    }
  }

在这里我的问题是,我根本无法比较这两个字符串。当我打印这两个变量时,我看到它们80%等于字符串的一部分不匹配。但是,当我直接检查数据库时数据正确显示,这意味着在PHP中阅读或从事项中读写。

您无法在SQL中进行比较,因为只有在一次又一次具有相同的指纹图像时,您才能将其匹配。但实际上,当您获得两次指纹时,两个图像将彼此不同,位置位置变化,角度变化和扫描质量很小。因此,无法进行字符串比较。

所有扫描仪都提供了用于捕获指纹并比较它们(1:1(的SDK,您可以将其用于开发桌面应用程序。如果需要比较服务器上的扫描图像,则需要实现自己的自动手指识别算法,或者必须使用第三方服务,例如

  1. 凸轮
  2. m2sys
  3. 神经技术

最新更新