我正在使用SQL Server数据库,其中我的一个表的列类型为 VARCHAR(MAX)。在此专栏中,我存储了BASE64字符串。
应用程序的基本流程是:
通过使用PHP将其存储到SQL服务器数据库中
3a。从数据库中检索所有指纹
3b。用从数据库接收到的所有指纹检查要插入的指纹数据
3c。如果有任何指纹与之匹配,则返回false 如果任何指纹不匹配,则返回true
如果返回值为true,则通过以下查询插入指纹;如果为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进行读取或编写内容。
答案 0 :(得分:0)
只有当您一次又一次拥有相同的指纹图像时,您才能在SQL中进行比较,只有这样才能使它匹配。但是实际上,当您两次获得指纹时,两张图像都会彼此不同,并且位置变化,角度变化和扫描质量都会有所变化。因此无法进行字符串比较。
所有扫描仪均提供用于捕获指纹并比较指纹(1:1)的SDK,可用于开发桌面应用程序。如果需要在服务器上比较扫描的图像,则需要实现自己的自动手指识别算法,或者必须使用第三方服务,例如