Estoy usando mysql_fetch_assoc($query)
, uno de los campos de bits vuelve a ser, que supuestamente es cierto.
El problema es que también necesito enviar esto a xml y es un carácter xml ilegal. el conjunto de caracteres para la tabla db es utf-8. ¿Por qué pasó esto?lectura de php campo de bit de mysql que devuelve el carácter extraño
Respuesta
Use la función BIN en su SELECCIONAR.
http://dev.mysql.com/doc/refman/5.0/en/bit-field-literals.html
MySQL está volviendo literalmente 0x00 y 0x01 para los campos de bits. Vas a tener que convertirlos en algo apropiado, ya sea PHP del lado
$bitvalue = ($bitvalue == 0x01) ? 'TRUE' : 'FALSE'
o en la consulta:
SELECT CAST(bitfield AS unsigned int)
FROM ...
el que lo convertirá en un int y regresar como '0' y '1' (0x48 y 0x49).
De manera adicional, algunas de las bibliotecas más antiguas de MySQL son anteriores a la compatibilidad con los campos de bits reales en MySQL (cuando se convirtieron silenciosamente en char (1)) y arruinarán los valores, por lo que si tiene problemas con una de esas versiones de dinosaurios, puede que tenga que usar la versión de consulta en lugar de la conversión de PHP.
También puede utilizar: ord($bitvalue)
.
Gracias por su contribución, pero creo que esto debería ser un comentario sobre la respuesta de Marc B. Esta respuesta no está sola. – Day
Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/faq#reputation) podrá para [comentar cualquier publicación] (http://stackoverflow.com/privileges/comment). – Day
@Day parece una buena respuesta para mí. – Mike
- 1. indexar un campo de bit en MYSQL
- 2. Carácter extraño del tablero en PHP
- 3. MySQL round error extraño
- 4. Lectura desde el archivo de texto carácter por carácter
- 5. El archivo de lectura de PHP devuelve el archivo de longitud cero
- 6. Consulta de Mysql que devuelve el árbol de categorías
- 7. Comportamiento extraño de IE: currentStyle devuelve nulo
- 8. API meteorológica de Google que devuelve un error nuevo extraño
- 9. MySQL devuelve un campo vacío: CONCAT (nonEmpty1, empty2, nonEmpty3) = NULL
- 10. Descripción de PHP & (comercial, bit a bit y) operador
- 11. Devuelve 0 si el campo es nulo en MySQL
- 12. operaciones bit a bit MySQL y filtrar
- 13. sintaxis de PHP extraño
- 14. Bit campo vs Bitset
- 15. cambiar el primer carácter en un campo
- 16. Lectura de un archivo carácter por carácter en C
- 17. PHP matriz bit a bit
- 18. MySQL MAX (id) llamado desde PHP produce un valor extraño
- 19. ¿Crear un campo de bit grande?
- 20. No se puede insertar el carácter ♥ en la tabla MySQL
- 21. MySQL operaciones bit a bit, filtro de floración
- 22. PHP-MySQL-¿Cómo incrementar de forma segura el campo entero de MySQL?
- 23. instrucción MySQL que devuelve una instrucción SQL?
- 24. ¿Qué extremo de un campo de bit es el bit más significativo?
- 25. MySQL: DATE_ADD devuelve BLOB
- 26. Explosión de PHP en el carácter nulo
- 27. Comportamiento extraño de JPA, el campo inicializado es nulo
- 28. Devuelve el enésimo registro de consulta MySQL
- 29. Comportamiento extraño en la función PowerShell que devuelve DataSet/DataTable
- 30. Push to Gist que devuelve un error extraño
También puede hacer 'SELECT bitfield + 0' para convertir a int. ¿Hay alguna diferencia al hacerlo de esa manera o usando 'CAST()'? – Mike
Para ser binario-seguro también se puede usar '$ bitvalue = ($ bitvalue === chr (0x01))' que asignará ya sea 'true' o' false' a '$ bitvalue'. –
@StanimirStoyanov el tuyo funcionó para mí –