penis_19_cm ([info]penis_19_cm) wrote,
@ 2007-08-25 23:33:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Сказка про php
В тридевятом домене, на тридесятом mysql-сервере жила-была вот такая таблица:
CREATE TABLE test (
      i int not null,
      j int not null
);

В один прекрасный день злая волшебница вставила в неё одну единственную строку:
INSERT INTO test (i, j) VALUES (1, 10);

Прекрасный принц решил посмотреть, что получится, если выполнить следующий код:
<?
$r = mysql_query("SELECT * FROM test");
$res = mysql_fetch_assoc($r);

$mask = $res['i'] | $res['j'];

printf("\$mask = %04b", $mask);
?>


Думаете, он получил 0b0001 | 0b0101 = 0b0111? А вот хуй вам в сраку, мои маленькие слушатели, прекрасный принц увидел на выходе "0101", чему, впрочем, и сам был зело удивлён. А всё оттого, что gettype($res['i']) == "string".

Мораль этой сказки проста: явно приводите данные, полученные из БД к целочисленному типу, если собираетесь проводить над ними побитовые операции.


Advertisement


(Read 1 comment)

Post a comment in response:

From:
Help
Identity URL: 
Username:
Password:
Don't have an account? Create one now.
Subject:
No HTML allowed in subject
   Help
Message:

 
Notice! This user has turned on the option that logs your IP address when posting. Help
Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…