简体   繁体   中英

How to put php variable in an sql query

So this is my code:

<nav class="navbar navbar-inverse">
    <div class="container-fluid">
        <div class="navbar-header">
          <a class="navbar-brand" href="#">WebSiteName</a>
        </div>

        <ul class="nav navbar-nav">
          <li class="active"><a href="#">Home</a></li>

          <?php
               $dbconn= new PDO('sqlite:negozio.db');


          $sqlcate = "SELECT * FROM categoria";
          foreach($dbconn->query($sqlcate) as $row) { ?>
          <li class="dropdown"> 
            <a class="dropdown-toggle" data-toggle="dropdown" href="#"><?php echo $row['des_categoria']; ?> <span class="caret"></span></a>

            <ul class="dropdown-menu">
              <?php 
                $sqltipocate = "SELECT tipo.des_tipo FROM tipo, categoria, tipo_cate WHERE tipo_cate.id_cate = categoria.id_categoria AND tipo_cate.id_tipo = tipo.id_tipo AND tipo_cate.id_categoria = " . $row['id_categoria'] . " "" "; 

              foreach($dbconn->query($sqltipocate) as $row1) { ?>

              <li><a href="#"><?php echo $row1['des_tipo']; ?></a></li>
            <?php } ?>  
          </ul>
      </li>
      <?php } ?>

        </ul>
  </div>
</nav>

Everything is working fine until $sqltipocate blabla...

This error always appears:

syntax error, unexpected T_CONSTANT_ENCAPSED_STRING

Can someone help me?

It is concatenation problem as regarded in previous answers. I can add something may make your life easier. It is sprintf

Your sql query string will be the format parameter of sprintf as follows:

            $sqltipocate = sprintf("SELECT tipo.des_tipo FROM tipo, categoria, tipo_cate WHERE tipo_cate.id_cate = categoria.id_categoria AND tipo_cate.id_tipo = tipo.id_tipo AND tipo_cate.id_categoria = %d", $row['id_categoria']); 

Use curly braces.

Example:

$id = 1;
$sql = "SELECT * FROM something WHERE id = {$id}";

echo $sql;
//SELECT * FROM something WHERE id = 1

Link to code: http://codepad.org/V9QasGHH

Store your $row['id_categoria'] in variable like

$id = $row['id_categoria'];

Then put $id in query like:

$sqltipocate = "SELECT tipo.des_tipo FROM tipo, categoria, tipo_cate WHERE tipo_cate.id_cate = categoria.id_categoria AND tipo_cate.id_tipo = tipo.id_tipo AND tipo_cate.id_categoria = '".$id."'";

See this tipo_cate.id_categoria = ' " $id " '

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM