Thursday, April 22, 2010

Result Set to Array

$sql="SELECT column_a FROM table";
$rs=odbc_exec($conn,$sql);

$arr = array(); //you need this in case it's empty, otherwise the foreach will throw an error

while( $col = odbc_fetch_array($rs) ) {
array_push($arr, $col);
}

foreach ($arr as $value) {
$sql2="SELECT * FROM table WHERE column_b = " . $value["column_a"];
$rs2=odbc_exec($conn,$sql2);
}

Wednesday, April 21, 2010

Invalid cursor state, SQL state 24000 in SQLExecDirect

This worked when I was running Windows (WAMP), but when I moved to Ubuntu it started throwing this error:
Warning: odbc_exec() [function.odbc-exec]: SQL error: [unixODBC][FreeTDS][SQL Server]Invalid cursor state, SQL state 24000 in SQLExecDirect Error in SQL

The problem was that I had an odbc_exec inside another one.

Something like this:
$sql="SELECT column_a FROM table";
$rs=odbc_exec($conn,$sql);

while (odbc_fetch_row($rs)) {
$sql2="SELECT * FROM table WHERE column_b = " . odbc_result($rs,"column_a");
$rs2=odbc_exec($conn,$sql2); //would not work
}

What I did to fix it:
$sql="SELECT column_a FROM table";
$rs=odbc_exec($conn,$sql);

$arr = array(); //you need this in case it's empty, otherwise the foreach will throw an error

while( $col = odbc_fetch_array($rs) ) {
array_push($arr, $col);
}

foreach ($arr as $value) {
$sql2="SELECT * FROM table WHERE column_b = " . $value["column_a"];
$rs2=odbc_exec($conn,$sql2);
}

You are just going throw the array instead of the result set... Straight forward, but wanted to share it :)

Friday, April 16, 2010

Carrera por llegar primero

Si pudiéramos acordarnos de nuestra niñez, qué tan atrás quisieras recordar? Primaria? Pre-escolar? Maternal? Primeros pasos?

No sé, pero analizando las cosas un poco definitivamente no quisiera recordar tan atrás como desde que fui un espermatozoide, debe ser sin lugar a dudas la experiencia mas traumática del mundo.

Los acontecimientos deben ser algo así:
Tranquilos durmiendo o quizás en posición de "en sus marcas" si se enteran que el propietario de las bolas está en plena tirazón... ¿cómo saben la diferencia los espermatozoides entre un terremoto y un polvo? No importa, igual... damas y caballeros PARTIDA! arrancan 20 millones de espermatozoides, la carrera por llegar primero, sobrevivir! Peor que abrir puerta en un concierto de Metallica, sacando codos, mas horrible que el traslado de metro en Plaza Venezuela, empujando gente, que digo gente, HERMANOS!, si estás leyendo esto dejaste atrás a dos millones de espermatozoides familiares tuyos! Llegar al óvulo, UN óvulo! Insisto, tal Metallica...

Luego de llegar, ok llegaste, "ya" dirás? no! Tienes que ver cómo los demás mueren a tu alrededor, afuera del óvulo, a la verga!... Definitivamente no es algo que quisiera recordar. Que maltripeo... Será que me estoy acordando y tengo remordimiento? Si yo, que soy bajito fui el más fuerte en ese momento, ¿mis hermanos iban a ser más bajitos que yo? ¿Hice trampa? ¿Fue una apuesta o concurso, y se acordó que yo era el elegido?

Creo que me quedo con la opción del concurso, quién quiere ser millonario versión espermatozoide... No sé creo que ya me fui pa´ lo hondo...

Ser feto debe ser relajante, a menos que te toque una madre de esas que creen que trotando durante el embarazo van a quedar flacas después de aumentar 20 kilos (tengo, a partir de hoy, una creencia firme: los antojos son mojón, lo usan como excusa para comer), señoras lo siento mucho, díganle adiós al blue jean que les quedaba en bachillerato.