Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • 0
FelipeOlvr

Query Multipla Dinamica

Pergunta

Tenho a tabela inform ( de informações ): 

 

CREATE TABLE IF NOT EXISTS `inform` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `photo_name` text COLLATE latin1_general_ci NOT NULL,
  `photo_content` mediumblob NOT NULL,
  `photo_content_type` varchar(255) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

 

Tenho também a tabela photos: 

 

CREATE TABLE IF NOT EXISTS `photos` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `foreign_key_inform` int(11) NOT NULL,
  `photo_name` text COLLATE latin1_general_ci NOT NULL,
  `photo_content` mediumblob NOT NULL,
  `photo_content_type` varchar(255) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
COMMIT;

 

( Estou apenas realizando testes )

 

Preciso fazer INSERT na inform e depois na  photos, para isso tenho o code:

 

<form action="?" method="POST" enctype="multipart/form-data" name="newProject">
 
<input type="file" name="coverPhoto" id="coverPhotos" required="required" /> <br> <br>
<input type="file" name="photos[]" multiple="multiple" id="photos" /> <br> <br>
 
<input type="submit" name="submit" value="submit" />
</form>
 
<?php
 
if ( isset ( $_POST['submit'] ) )
{
if ( empty( $_FILES['photos']['name'] ) )
{
echo '<br>' . 'CADASTRO INVALIDO !' . '<br>'; die();
}
 
else
{
echo '<pre> ';
 
print_r ( $_FILES['coverPhoto'] );
 
echo '</pre>';
 
$cover = $_FILES['coverPhoto'];
$coverName = $_FILES['coverPhoto']['name'];
$coverContent = file_get_contents ( $_FILES['coverPhoto']['tmp_name'] );
$coverType = $_FILES['coverPhoto']['type'];
 
#
 
$photos = $_FILES['photos'];
 
foreach ($photos as $matriz)
{
foreach ($matriz as $interno)
{
if ( empty ( $interno ) ):
 
$second = false;
 
else:
 
$second = true;
 
endif;
}
}
 
try
{
$database = new PDO("mysql:host=localhost;dbname=tests", "root", "admin");
 
$insertCover = "INSERT INTO inform VALUES (default, ?, ?, ?);";
 
$prepareCover = $database->prepare( $insertCover );
 
$prepareCover->bindParam(1, $coverName );
$prepareCover->bindParam(2, $coverContent );
$prepareCover->bindParam(3, $coverType );
 
if ( $prepareCover->execute() ):
 
echo '<br>' . 'INFORMAÇÕES INSERIDAS !' . '<br>';
 
$last = $database->lastInsertId();
 
# echo $last;
 
if ( $second ):
 
$numberPhotos = count ( $_FILES['photos']['name'] );
 
$insertPhotos = 'INSERT INTO photos VALUES ';
$photosValues = "(default, null, :photoName, :photoContent, :photoType),";
 
for ($v = 0; $v < $numberPhotos; $v++)
{
$replace = str_replace(
 
array('default', 'null',':photoName', ':photoContent', ':photoType'),
array('default', $last, ":photoName$v", ":photoContent$v", ":photoType$v"),
$photosValues
);
 
$insertPhotos .= $replace;
}
 
$insertPhotos = rtrim( $insertPhotos, ",");
 
# echo '<br>' . $insertPhotos . '<br>';
 
$sth = $database->prepare( $insertPhotos );
 
for ($p = 0; $p < $numberPhotos; $p++)
{
// echo "\$sth->bindValue(\":photoName$param\", "; echo pathinfo ( $photos['name'][$param], PATHINFO_FILENAME) . ')<br>';
// # echo "$sth->bindValue(":photoContent$param", file_get_contents( $photos['tmp_name'][$param]));";
// echo "<br>\$sth->bindValue(\":PhotoType$param\", "; echo $photos['type'][$param] . ')<br>';
 
$sth->bindValue(':photoName' . $p, pathinfo ( $photos['name'][$p], PATHINFO_FILENAME ) );
$sth->bindValue(':photoContent' . $p, file_get_contents ( $photos['tmp_name'][$p] ) );
$sth->bindValue(':PhotoType' . $p, $photos['type'][$p]);
}
 
if ( $sth->execute() ):
 
echo '<br>' . 'PROJETO CADASTRADO COM MAIS DE UMA FOTO !' . '<br>';
 
else:
 
echo '<br>' . 'PROJETO COM MAIS DE UMA FOTO, PORÉM NÃO CADASTRADO !' . '<br>';
 
endif;
 
else:
 
echo '<br>' . 'PROJETO CADASTRADO COM UMA FOTO APENAS !' . '<br>';
 
endif;
 
else:
 
echo '<br>' . 'INFORMAÇÕES NÃO INSERIDAS !' . '<br>';
 
endif;
}
 
catch (Exception $e )
{
echo $e->getMessage();
}
}
 
}

 

Minha dúvida é pq do erro, na verdade não consigo identifica-lo. Alguém pode me ajudar a executar o código ? Mt Obg !

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 resposta a esta questão

Recommended Posts

10 minutos atrás, FelipeOlvr disse:

Tenho a tabela inform ( de informações ): 

 

CREATE TABLE IF NOT EXISTS `inform` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `photo_name` text COLLATE latin1_general_ci NOT NULL,
  `photo_content` mediumblob NOT NULL,
  `photo_content_type` varchar(255) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

 

Tenho também a tabela photos: 

 

CREATE TABLE IF NOT EXISTS `photos` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `foreign_key_inform` int(11) NOT NULL,
  `photo_name` text COLLATE latin1_general_ci NOT NULL,
  `photo_content` mediumblob NOT NULL,
  `photo_content_type` varchar(255) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
COMMIT;

 

( Estou apenas realizando testes )

 

Preciso fazer INSERT na inform e depois na  photos, para isso tenho o code:

 

<form action="?" method="POST" enctype="multipart/form-data" name="newProject">
 
<input type="file" name="coverPhoto" id="coverPhotos" required="required" /> <br> <br>
<input type="file" name="photos[]" multiple="multiple" id="photos" /> <br> <br>
 
<input type="submit" name="submit" value="submit" />
</form>
 
<?php
 
if ( isset ( $_POST['submit'] ) )
{
if ( empty( $_FILES['photos']['name'] ) )
{
echo '<br>' . 'CADASTRO INVALIDO !' . '<br>'; die();
}
 
else
{
echo '<pre> ';
 
print_r ( $_FILES['coverPhoto'] );
 
echo '</pre>';
 
$cover = $_FILES['coverPhoto'];
$coverName = $_FILES['coverPhoto']['name'];
$coverContent = file_get_contents ( $_FILES['coverPhoto']['tmp_name'] );
$coverType = $_FILES['coverPhoto']['type'];
 
#
 
$photos = $_FILES['photos'];
 
foreach ($photos as $matriz)
{
foreach ($matriz as $interno)
{
if ( empty ( $interno ) ):
 
$second = false;
 
else:
 
$second = true;
 
endif;
}
}
 
try
{
$database = new PDO("mysql:host=localhost;dbname=tests", "root", "admin");
 
$insertCover = "INSERT INTO inform VALUES (default, ?, ?, ?);";
 
$prepareCover = $database->prepare( $insertCover );
 
$prepareCover->bindParam(1, $coverName );
$prepareCover->bindParam(2, $coverContent );
$prepareCover->bindParam(3, $coverType );
 
if ( $prepareCover->execute() ):
 
echo '<br>' . 'INFORMAÇÕES INSERIDAS !' . '<br>';
 
$last = $database->lastInsertId();
 
# echo $last;
 
if ( $second ):
 
$numberPhotos = count ( $_FILES['photos']['name'] );
 
$insertPhotos = 'INSERT INTO photos VALUES ';
$photosValues = "(default, null, :photoName, :photoContent, :photoType),";
 
for ($v = 0; $v < $numberPhotos; $v++)
{
$replace = str_replace(
 
array('default', 'null',':photoName', ':photoContent', ':photoType'),
array('default', $last, ":photoName$v", ":photoContent$v", ":photoType$v"),
$photosValues
);
 
$insertPhotos .= $replace;
}
 
$insertPhotos = rtrim( $insertPhotos, ",");
 
# echo '<br>' . $insertPhotos . '<br>';
 
$sth = $database->prepare( $insertPhotos );
 
for ($p = 0; $p < $numberPhotos; $p++)
{
// echo "\$sth->bindValue(\":photoName$param\", "; echo pathinfo ( $photos['name'][$param], PATHINFO_FILENAME) . ')<br>';
// # echo "$sth->bindValue(":photoContent$param", file_get_contents( $photos['tmp_name'][$param]));";
// echo "<br>\$sth->bindValue(\":PhotoType$param\", "; echo $photos['type'][$param] . ')<br>';
 
$sth->bindValue(':photoName' . $p, pathinfo ( $photos['name'][$p], PATHINFO_FILENAME ) );
$sth->bindValue(':photoContent' . $p, file_get_contents ( $photos['tmp_name'][$p] ) );
$sth->bindValue(':PhotoType' . $p, $photos['type'][$p]);
}
 
if ( $sth->execute() ):
 
echo '<br>' . 'PROJETO CADASTRADO COM MAIS DE UMA FOTO !' . '<br>';
 
else:
 
echo '<br>' . 'PROJETO COM MAIS DE UMA FOTO, PORÉM NÃO CADASTRADO !' . '<br>';
 
endif;
 
else:
 
echo '<br>' . 'PROJETO CADASTRADO COM UMA FOTO APENAS !' . '<br>';
 
endif;
 
else:
 
echo '<br>' . 'INFORMAÇÕES NÃO INSERIDAS !' . '<br>';
 
endif;
}
 
catch (Exception $e )
{
echo $e->getMessage();
}
}
 
}

 

Minha dúvida é pq do erro, na verdade não consigo identifica-lo. Alguém pode me ajudar a executar o código ? Mt Obg !

 

 

O erro é o seguinte: Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp64\www\development\testeSecondRegister\index.php on line 115

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.