{"id":169,"date":"2006-07-18T23:58:41","date_gmt":"2006-07-18T22:58:41","guid":{"rendered":"http:\/\/inacreditavel.ioio.info\/?p=169"},"modified":"2006-07-19T00:02:53","modified_gmt":"2006-07-18T23:02:53","slug":"porra-para-o-php","status":"publish","type":"post","link":"http:\/\/www.inacreditavel.pt\/?p=169","title":{"rendered":"Porra para o PHP"},"content":{"rendered":"<p>O PHP tem um erro merdoso nas interfaces PDO\/MySQL e MySQLi.<br \/>\nPassei o dia todo a resolver um problema num programa por causa desse erro.<br \/>\nFelizmente, esse erro do PHP n\u00e3o existe na interface tradicional com o MySQL, e assim consegui contornar o problema.<\/p>\n<h4>Descri\u00e7\u00e3o do BUG<\/h4>\n<p>Tanto a interface PDO\/MySQL como a MySQLi n\u00e3o permitem a chamada de Stored Procedures que tenham par\u00e2metros de sa\u00edda (tipo OUT). As Stored Procedures at\u00e9 funcionam, mas n\u00e3o devolvem valores.<\/p>\n<p>Eu j\u00e1 sabia desse erro h\u00e1 uns meses e arranjei uma solu\u00e7\u00e3o na net que contornava o problema.<\/p>\n<p>S\u00f3 que eu precisava de executar um ciclo de chamadas a essa Stored Procedure. Mas s\u00f3 a primeira chamada \u00e9 que devolvia valores nos par\u00e2metros de sa\u00edda. A segunda chamada e seguintes n\u00e3o devolviam nada.<\/p>\n<p>Em resumo:<\/p>\n<ul>\n<li>A forma de chamada <a href=\"http:\/\/www.php.net\/manual\/en\/ref.pdo.php#pdo.prepared-statements\">aconselhada no manual do PHP<\/a> com PDO (para Stored Procedures de MySQL com par\u00e2metros de sa\u00edda) n\u00e3o funciona: nem sequer na 1\u00aa vez que se chama a SP;<\/li>\n<li>Com a <a href=\"http:\/\/bugs.mysql.com\/bug.php?id=11638\">solu\u00e7\u00e3o que encontrei na net<\/a>, a 1\u00aa chamada \u00e0 SP funciona, mas as outras n\u00e3o.<\/li>\n<\/ul>\n<p>Assim, e depois de muito penar:<\/p>\n<ul>\n<li>ter a certeza de que o problema n\u00e3o era do meu c\u00f3digo<\/li>\n<li>experimentar (imensas) solu\u00e7\u00f5es alternativas<\/li>\n<li>tentar compilar uma vers\u00e3o de desenvolvimento (<a href=\"http:\/\/snaps.php.net\/\">snap<\/a>) do PHP<\/li>\n<li>ter chegado a pensar que tinha que desistir do PDO, e reformular todo o c\u00f3digo (dezenas de programas, semanas de trabalho)<\/li>\n<\/ul>\n<p>decidi experimentar chamar a SP com a interface MySQL simples (n\u00e3o orientada a objectos). E funcionou!<\/p>\n<p>Tenho tudo com PDO excepto a tal chamada c\u00edclica \u00e0 SP com par\u00e2metros de sa\u00edda.<\/p>\n<p>Foram 12 horas perdidas. Foda-se para esta merda, mas enfim&#8230; acabou em bem.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O PHP tem um erro merdoso nas interfaces PDO\/MySQL e MySQLi. Passei o dia todo a resolver um problema num programa por causa desse erro. Felizmente, esse erro do PHP n\u00e3o existe na interface tradicional com o MySQL, e assim consegui contornar o problema. Descri\u00e7\u00e3o do BUG Tanto a interface PDO\/MySQL como a MySQLi n\u00e3o [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,3],"tags":[],"_links":{"self":[{"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=\/wp\/v2\/posts\/169"}],"collection":[{"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=169"}],"version-history":[{"count":0,"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=\/wp\/v2\/posts\/169\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=169"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}