名前のリストとビットごとの値が関連付けられたデータベーステーブルがあります。実際の問題なしに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->Conditions;
私は得る: 67108864
私が知っているのは「特別」を表す
2番目のクエリの結果を最初のクエリが作成した配列と比較する方法がわかりません。
ありがとう。