如何检查是否在 MySQL 中设置了位

硫酸铁

我在 MySQL 数据库中有一个表BIT(64),其中一行是 64 个标志的位掩码。

使用 PHP 和 mysqli,我有一个 integer $n,它在[0, 64). 我已经编写了一个函数(参见附录 I)来设置字节数组(即 PHP 中的字符串)的n位。

当通过上述的字节数组(字符串)到MySQL,似乎bitmask & ?,其中?mysqli::bind_param编为字节阵列(PARAM类型是"s"),不将位按预期进行比较。

例如,使用此查询:

SELECT id FROM my_table WHERE (bitmask & ?) > 0

在这张桌子上:

CREATE TABLE my_table (id INT PRIMARY KEY, bitmask BIT(64));

如何解决这个问题?

我想通过一个bin2hexUNHEX()它,但这似乎并没有解决问题。

附录一

public static function setNthBit(int $n, int $bytes = 8) : string{
    $offset = $n >> 3;
    $byteArray = str_repeat("\0", $bytes);
    $byteArray{$bytes - 1 - $offset} = chr(1 << ($n & 7));
    return $byteArray;
}
硫酸铁

看来问题出在 MySQL 不支持字符串的按位比较。当我直接将位掩码作为参数传递时,MySQL 会尝试解释为整数,例如尝试解释bitmask & '123'bitmask & 123. 我不确定 MySQL 是如何解释一堆二进制字符的,比如\xFF\x00——它只是行不通,可能被解释为 0。

我通过bin2hex在输入和CONV(?, 16, 10)查询中传递位掩码的来解决这个问题CONV() 将以十进制表示数据,MySQL 希望将其解释为类似于 BIGINT 的东西,它可以成功地与 BIT(64) 行进行按位比较。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检查整数中是否只设置了一位?

来自分类Dev

如何检查MySQL中是否存在行?(即检查MySQL中是否存在电子邮件)

来自分类Dev

检查是否在DWORD中设置了某些位

来自分类Dev

如何检查MySQL中字段中的特定值是否存在

来自分类Dev

在Ansible中,如何检查是否安装了特定版本的MySQL?

来自分类Dev

如何创建检查记录是否在mysql中不存在?

来自分类Dev

如何在MySQL查询中检查值是否存在

来自分类Dev

如何检查 3 个字段在 MySQL 中是否唯一?

来自分类Dev

如何检查我的文件是否在repo中设置了可执行位权限

来自分类Dev

如何集体检查是否在无符号整数中设置了位?

来自分类Dev

如何检查TarArchiveEntry是否设置了3个执行位中的任何一个?

来自分类Dev

检查是否未设置位

来自分类Dev

如何检查变量是否为NULL,然后使用MySQL存储过程进行设置?

来自分类Dev

在C语言中,如何检查是否使用XOR设置了位?

来自分类Dev

在C语言中,如何检查是否使用XOR设置了位?

来自分类Dev

如何检查是否在结构中设置了属性

来自分类Dev

如何检查指令中是否设置了&变量

来自分类Dev

如何检查Laravel中是否设置了cookie?

来自分类Dev

如何检查设置中是否存在属性?

来自分类Dev

如何检查数组(php)中是否有任何项目在表(mysql)中

来自分类Dev

如何在Inno设置中检查64/32位

来自分类Dev

如何检查记录是否存在然后在MySQL中返回1否则返回0

来自分类Dev

如何检查两个日期范围是否在mysql中重叠?

来自分类Dev

MySQL如何检查列列表中的任何值是否为NULL?

来自分类Dev

MySQL如何检查结果中是否已经有值?

来自分类Dev

如何在PHP的MySQL数据库中检查值是否存在?

来自分类Dev

PHP如何检查MySQL表中是否已存在字符串

来自分类Dev

如何在mysql中检查列值是否具有字符串或数字值?

来自分类Dev

如何检查记录是否存在,然后在MySQL中返回1,否则返回0

Related 相关文章

  1. 1

    如何检查整数中是否只设置了一位?

  2. 2

    如何检查MySQL中是否存在行?(即检查MySQL中是否存在电子邮件)

  3. 3

    检查是否在DWORD中设置了某些位

  4. 4

    如何检查MySQL中字段中的特定值是否存在

  5. 5

    在Ansible中,如何检查是否安装了特定版本的MySQL?

  6. 6

    如何创建检查记录是否在mysql中不存在?

  7. 7

    如何在MySQL查询中检查值是否存在

  8. 8

    如何检查 3 个字段在 MySQL 中是否唯一?

  9. 9

    如何检查我的文件是否在repo中设置了可执行位权限

  10. 10

    如何集体检查是否在无符号整数中设置了位?

  11. 11

    如何检查TarArchiveEntry是否设置了3个执行位中的任何一个?

  12. 12

    检查是否未设置位

  13. 13

    如何检查变量是否为NULL,然后使用MySQL存储过程进行设置?

  14. 14

    在C语言中,如何检查是否使用XOR设置了位?

  15. 15

    在C语言中,如何检查是否使用XOR设置了位?

  16. 16

    如何检查是否在结构中设置了属性

  17. 17

    如何检查指令中是否设置了&变量

  18. 18

    如何检查Laravel中是否设置了cookie?

  19. 19

    如何检查设置中是否存在属性?

  20. 20

    如何检查数组(php)中是否有任何项目在表(mysql)中

  21. 21

    如何在Inno设置中检查64/32位

  22. 22

    如何检查记录是否存在然后在MySQL中返回1否则返回0

  23. 23

    如何检查两个日期范围是否在mysql中重叠?

  24. 24

    MySQL如何检查列列表中的任何值是否为NULL?

  25. 25

    MySQL如何检查结果中是否已经有值?

  26. 26

    如何在PHP的MySQL数据库中检查值是否存在?

  27. 27

    PHP如何检查MySQL表中是否已存在字符串

  28. 28

    如何在mysql中检查列值是否具有字符串或数字值?

  29. 29

    如何检查记录是否存在,然后在MySQL中返回1,否则返回0

热门标签

归档