Archive for » December, 2007 «

Tuesday, December 18th, 2007 | Author: zedmaster

Estava eu programando alegre e contente a minha Stored Procedure. Testei e testei a minha SP no MySQL Query Browser, ela estava perfeita. Então já era a hora de coloca-la no meu código.
Quando executo-a, o Zend Framework me mostra o seguinte erro:


Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘a.Código’ in ‘where clause” in /xxx/xxx/xxx/sp.php:37

Infelizmente ainda encontramos banco de dados aonde novatos DBAS colocam nomes de campo com acento, espaço e todos os caracteres possíveis que possam causar problemas futuros.

Então resolvo entrar no canal do IRC #zftalk na freenode.net, e faço a pergunta se alguém já pode me ajudar e recebo a resposta rtfm (read the fuck manual), então vamos ao manual.

Praticando o rtfm, encontro a resposta em http://br.php.net/manual/pt_BR/ref.pdo.php#68103

E resolvo meu problema colocando :

$db->exec('SET CHARACTER SET utf8');

antes de chamar a minha SP.

Tabela:

CREATE TABLE test(
    `código` INT,
    nome VCHAR(30)
);


Stored Procedure:

DELIMITER $$
 
DROP PROCEDURE IF EXISTS `dct`.`sp_test`$$
CREATE DEFINER=`test`@`localhost` PROCEDURE `sp_test`(
)
BEGIN
 
    SELECT `código`,nome WHERE `código` = 1;
 
END$$
 
DELIMITER ;


Código ZF:

$db->query('SET CHARACTER SET utf8');
$result = $db->query("CALL sp_test()");
$result = $result->fetchAll();
var_dump($result);

Espero ter ajudado alguém com isso.

Category: PHP  | Leave a Comment