我有一个包含名称列表的数据库表,并关联了按位值,我可以创建一个没有任何实际问题的 php 数组,但我需要能够用另一个查询检查它映射到数组中的哪个结果条件,然后显示关联的名称。
$DBH = new PDO("dblib:host=$myServer;dbname=$SystemDB", $myUser, $myPass);
$DBH1 = new PDO("dblib:host=$myServer;dbname=$TaxiHistoryDB", $myUser, $myPass);
$sth = $DBH->prepare("SELECT dbo.Conditions.Name, dbo.Conditions.ConditionValue
FROM dbo.Conditions
WHERE dbo.Conditions.ConditionID > 0");
$sth->execute();
$ConditionsArray = $sth->fetchAll();
$STH1 = $DBH1->query("SELECT dbo.tblBooking.Conditions
FROM dbo.tblBooking
WHERE dbo.tblBooking.BookingID = '36607762'");
$STH1->setFetchMode(PDO::FETCH_LAZY);
while($row1 = $STH1->fetch()){
$condition = $row1->Conditions;
}//end while
第一个查询给了我一个如下所示的结果:
Array ( [0] => Array ( [Name] => [0] => [ConditionValue] => 1 [1] => 1 )
[1] => Array ( [Name] => [0] => [ConditionValue] => 2 [1] => 2 )
[2] => Array ( [Name] => [0] => [ConditionValue] => 4 [1] => 4 )
[3] => Array ( [Name] => [0] => [ConditionValue] => 8 [1] => 8 )
[4] => Array ( [Name] => [0] => [ConditionValue] => 16 [1] => 16 )
[5] => Array ( [Name] => [0] => [ConditionValue] => 32 [1] => 32 )
[6] => Array ( [Name] => [0] => [ConditionValue] => 64 [1] => 64 )
[7] => Array ( [Name] => [0] => [ConditionValue] => 128 [1] => 128 )
[8] => Array ( [Name] => Exterior Hoist [0] => Exterior Hoist [ConditionValue] => 256 [1] => 256 )
[9] => Array ( [Name] => [0] => [ConditionValue] => 512 [1] => 512 )
[10] => Array ( [Name] => [0] => [ConditionValue] => 1024 [1] => 1024 )
[11] => Array ( [Name] => [0] => [ConditionValue] => 2048 [1] => 2048 )
[12] => Array ( [Name] => [0] => [ConditionValue] => 4096 [1] => 4096 )
[13] => Array ( [Name] => [0] => [ConditionValue] => 8192 [1] => 8192 )
[14] => Array ( [Name] => [0] => [ConditionValue] => 16384 [1] => 16384 )
[15] => Array ( [Name] => [0] => [ConditionValue] => 32768 [1] => 32768 )
[16] => Array ( [Name] => Parcel [0] => Parcel [ConditionValue] => 65536 [1] => 65536 )
[17] => Array ( [Name] => Cheques [0] => Cheques [ConditionValue] => 131072 [1] => 131072 )
[18] => Array ( [Name] => OuterArea [0] => OuterArea [ConditionValue] => 262144 [1] => 262144 )
[19] => Array ( [Name] => [0] => [ConditionValue] => 524288 [1] => 524288 )
[20] => Array ( [Name] => [0] => [ConditionValue] => 1048576 [1] => 1048576 )
[21] => Array ( [Name] => V [0] => V [ConditionValue] => 2097152 [1] => 2097152 )
[22] => Array ( [Name] => Wheelchair [0] => Wheelchair [ConditionValue] => 4194304 [1] => 4194304 )
[23] => Array ( [Name] => M50 [0] => M50 [ConditionValue] => 8388608 [1] => 8388608 )
[24] => Array ( [Name] => Executive Car (Silver) [0] => Executive Car (Silver) [ConditionValue] => 16777216 [1] => 16777216 )
[25] => Array ( [Name] => Two M50s [0] => Two M50s [ConditionValue] => 33554432 [1] => 33554432 )
[26] => Array ( [Name] => Special [0] => Special [ConditionValue] => 67108864 [1] => 67108864 )
[27] => Array ( [Name] => Animal [0] => Animal [ConditionValue] => 134217728 [1] => 134217728 )
[28] => Array ( [Name] => COD Parcel [0] => COD Parcel [ConditionValue] => 268435456 [1] => 268435456 )
[29] => Array ( [Name] => 9 seater [0] => 9 seater [ConditionValue] => 536870912 [1] => 536870912 )
[30] => Array ( [Name] => 6 seater [0] => 6 seater [ConditionValue] => 1073741824 [1] => 1073741824 )
[31] => Array ( [Name] => 7 seater [0] => 7 seater [ConditionValue] => 2147483648 [1] => 2147483648 )
[32] => Array ( [Name] => Wagon [0] => Wagon [ConditionValue] => 4294967296 [1] => 4294967296 )
[33] => Array ( [Name] => Maxi10str [0] => Maxi10str [ConditionValue] => 8589934592 [1] => 8589934592 )
[34] => Array ( [Name] => Bike [0] => Bike [ConditionValue] => 17179869184 [1] => 17179869184 )
[35] => Array ( [Name] => NonMaxi [0] => NonMaxi [ConditionValue] => 34359738368 [1] => 34359738368 )
[36] => Array ( [Name] => NonMaxiOrMulti [0] => NonMaxiOrMulti [ConditionValue] => 68719476736 [1] => 68719476736 )
[37] => Array ( [Name] => [0] => [ConditionValue] => 137438953472 [1] => 137438953472 )
[38] => Array ( [Name] => Towbar [0] => Towbar [ConditionValue] => 274877906944 [1] => 274877906944 )
[39] => Array ( [Name] => NO DISPATCH [0] => NO DISPATCH [ConditionValue] => 549755813888 [1] => 549755813888 ) )
我在这里和其他地方读过几篇文章,我了解按位运算的工作原理,但我对我会经历的语法或过程有点迷茫。本质上,一个工作编号将有 0 到 40 个与之相关的条件。
在while循环中使用以下代码
echo $row1->条件;
我得到:67108864
我知道代表“特殊”
我只是不确定如何将第二个查询的结果与第一个查询生成的数组进行比较。
谢谢。