Jump to content
mamotinho

Como faço para usar EXEC procedure com PDO?

Recommended Posts

Olá, estou recentemente estudando o PDO , já conseguir usar INSERT/UPDATER/DELETE porém eu utilizo banco de dados MSSQL SERVER 2008 estou tentando usar o método exec para eu executa a procedure que contém mais inserção dentro dela.

 

tentei utilizar o mesmo modelo que faço:

EXEMPLO:

    $ClassProcedure  = $conexao->prepare("EXEC Account.dbo.pdoteste (:Login, :country, :firsname)");

 

mais não funciona, o PDO utiliza outra forma de executa procedure? se sim alguém poderia me fazer uma execução demonstrativo por favor.

quero utiliza essa função para cadastro com o methodo $_GET

Share this post


Link to post
Share on other sites

eu estou querendo usar essa função no PHP e no caso queria está usando o prepare com o BindParam 
no caso esse é a execução

Código de inserção via store procedure mssql

 $tool_send_r = $db->query('exec account.dbo.cabal_tool_registerAccountTESTE "'. $db->quote($username) .'", "'.$password.'", "'.$firsname.'", "'.$email.'", "'.$chave.'"');

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By ndias
      Estou com duvida se minha conexão está encerrando.
       
      Utilizo PDO para me conectar:
       
      public static function getDb(){ try { $db = new \PDO( 'mysql:host=localhost;dbname=xyz;charset=utf8', 'xyz', 'xyz1234', array( \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION ) ); return $db; } catch (PDOException $e) { echo "Erro de Conexão " . $e->getMessage() . "\n"; exit; } } public function __construct(\PDO $db) { $this->db = $db; } public function verifica(){ $sql = "SELECT * FROM tabela "; $result = $this->db->query($sql); $rows = $result->fetch(); if($rows){ }else{ } } public function __destruct() { unset($this->db); foreach ($this as $key => $value) { unset($this->$key); } } Estou fazendo certo? Como posso verificar se a conexão está ficando aberta?
    • By Jeová Oliveira dos Santos
      Não acha a função prepare
      class ClassCrud extends ClassConexao { #Atributos private $Crud; private $Contador; #Preparação das declarativas public function preparedStatements($Query, $Parametros){ $this->countParamentos($Parametros); $this->Crud=$this->connectaDB()->prepare($Query); echo $this->Contador; } #Contador de parâmentros private function countParamentos($Paramentors){ $this->Contador=count($Paramentors); } } ClassConexao
      <?php abstract class ClassConexao { #Realizar conexão com o banco de dados protected function conectaDB() { try { $conn = new PDO('mysql:host=localhost;dbname=crud;port=3308', "root", ""); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //$id = 1; //$stmt = $conn->prepare('SELECT * FROM cadastro WHERE id = :id'); //$stmt->execute(array('id' => $id)); //$result = $stmt->fetchAll(); //if (count($result)) { // foreach ($result as $row) { // print_r($row); // } //} else { // echo "Nennhum resultado retornado."; //} } catch (PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } } Index
      <?php include ("Includes/Header.php"); ?> <div class="Content"> <?php include("Class/ClassConexao.php"); include("Class/ClassCrud.php"); $Crud=new ClassCrud(); $Crud->preparedStatements('desfilar',array(1,2,3,4,5)); ?> </div> <?php include ("Includes/Footer.php"); ?> Mais o erro acontece e não consigo resolver.
      Erro abaixo
      Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\wamp64\www\Crud\Class\ClassCrud.php on line 14
    • By reis77
      Fala pessoal, estou ultimamente com um probleminha em um projeto no qual estou desenvolvendo e queria contar com o conhecimento de vocês para poder me ajudar.
      Então, eu fiz uma conexão com o banco de dados mysql PDO e quando o projeto inseri conteúdo lá ele aparece com caracteres estranhos no lugar de acentuações.
      Já fiz alguns procedimentos, mas não sei onde estou errando !
       
      A arquitetura do bando de dados.
       
      <?php
      ob_start();
      try {
          $con = new PDO("mysql:dbname=buscador2;host=localhost", "root", "",
           array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
          $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
      }
      catch(PDOExeption $e) {
           echo "Connection failed: " . $e->getMessage();
      }
      ?>
       
       
    • By Gildvan Arley
      <?php $consulta = $conexao->query('SELECT * FROM nomevip '); while ($exibir=$consulta->fetch(PDO::FETCH_ASSOC)){ ?> Olá
      Como posso remover 13 ids desse SELECT do 1 ao 13 
    • By andrelimaverde
      Pessoal desde já agradeço a todos, e vamos lá.
      Primeiro esclareço que meu conhecimento em PHP é básico e em MYSQL praticamente nulo...
      Meu objetivo é: Salvar dados do formulário (3 páginas) no mesmo ID (mesma linha) do banco de dados.
      Tenho:
       
      <!-- PÁGINA INDEX.PHP --> <?php session_start(); ?> <html> <form method="POST" action="1.php"> <input type="text" name="namenome" placeholder="Nome"> <input type="text" name="namesobrenome" placeholder="Sobrenome"> <input type="radio" name="radio" value="Masculino"> <input type="radio" name="radio" value="Feminino"> <input type="submit" name="namebtn" value="Próximo Passo"> </form> </html> E assim são as outras duas páginas, exemplificando, muito simples...
      No Index o FORM tem action="1.php" 
      Na Pagina2 o FORM tem action="2.php" e assim sucessivamente.
      1.php funcionando perfeitamente:
      <?php session_start(); include_once 'conexao.php'; //conexao.php somente faz a conexão com banco de dados, define as credenciais e atrubi a variável $conn //$conn = new PDO('mysql:host=' . HOST . ';dbname=' . DBNAME . ';', USER, PASS); $btn = filter_input(INPUT_POST, 'namebtn', FILTER_SANITIZE_STRING); if($btn){ //Recebe os dados do form $nom = filter_input(INPUT_POST, 'namenome', FILTER_SANITIZE_STRING); $sob = filter_input(INPUT_POST, 'namesobrenome', FILTER_SANITIZE_STRING); $rad = filter_input(INPUT_POST, 'radio', FILTER_SANITIZE_STRING); //Insere os dados no banco $get_data = "INSERT INTO info_tabela (nome, sobrenome, sexo) VALUES (:namenome, :namesobrenome, :radio)"; $insert_data = $conn->prepare($get_data); $insert_data->bindParam(':namenome', $nom); $insert_data->bindParam(':namesobrenome', $sob); $insert_data->bindParam(':radio', $rad); if($insert_data->execute()){ header("Location:pagina2.php"); //Se enviar corretamente redireciona para segunda página }else{ $_SESSION['msg'] = "<p style='color:tomato;background:#fff;'>Não foi possível enviar suas informações, verifique e tente novamente.</p>"; header("Location:index.php"); //Se não apresenta o erro } }else{ $_SESSION['msg'] = "<p style='color:tomato;'>Não foi possível enviar suas informações, verifique e tente novamente.</p>"; header("Location:index.php"); } Até ai tudo bem, insere corretamente os dados nas respectivas colunas da tabela ID=1, NOME= 'nome', SOBRENOME= 'sobrenome', SEXO= 'sexo'.
      No Banco de Dados ainda temos as colunas a serem preenchidas no mesmo ID(mesma linha) --> CIDADE= ' ', ENDEREÇO= ' ', CEP= ' ', 
      Que referem-se à pagina2.php:
      <!-- PÁGINA PAGINA2.PHP --> <?php session_start(); ?> <html> <form method="POST" action="2.php"> <!-- ACTION 2.PHP RESPECTIVAMENTE --> <input type="text" name="namecidade" placeholder="Cidade"> <input type="text" name="nameendereco" placeholder="Endereço"> <input type="tex" name="namecep" placeholder="Cep"> <input type="submit" name="namebtn" value="Próximo Passo"> </form> </html> O problema, é que ao enviar o formulário com action="2.php" cujo arquivo possui o mesmo código que o "1.php" mudando somente os dados recebidos,
      No Banco de Dados é criado um novo ID(2) ou seja, uma nova linha, com os dados atuais nas colunas (cidade, endereço, cep) preenchidos, e as colunas anteriores (nome, sobrenome, sexo) vazias...
      Pessoal esta é a minha dúvida, como resolver, salvar todos os dados num mesmo id, mesma linha. O código do arquivo 2.php é o mesmo pois não faço ideia de como implementar isso, como em soluções anteriores tais dados costumava enviar com PhpMailer para e-mail então não entendo de MYSQL.
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.