简体   繁体   English

smt-> close()之后什么也没有发生;

[英]Nothing happens after smt->close();

I'm trying to debug using echo in some parts of my code, I identified that after I use the $sql->close(); 我试图在代码的某些部分中使用echo进行调试,我发现在使用$sql->close(); command, nothing happens, even the echo's do not appear. 命令,什么也不会发生,即使回声也不会出现。 I used an echo right before which showed the text and after this command. 我在该命令之前和之后使用了回显。

You can disregard the code after $stremail since I used /*comment afterwards... 您可以忽略$ stremail之后的代码,因为之后我使用了/ * comment ...

Let me know if you need more details, this is my second post, sorry if I'm missing out something. 如果您需要更多详细信息,请告诉我,这是我的第二篇文章,如果我错过了一些事情,对不起。

I hope you can help me out on this... 我希望你能在这方面帮助我...

<html>
    <head>
</head>
<body>

<?php require 'connection.php';
//Insere no BD
$id=$_POST['id_quote'];
$idcomp=$_POST['id_quote'];

if(isset($_POST["price"]) && is_array($_POST["price"])){
    $i=0;
    foreach($_POST["price"] as $key => $text_field){
        if($_POST['update']!=true)
        {
        $sql .= "INSERT INTO price (id_quote, id_provider, price)
        VALUES ('". $id ."', '". $_POST["id_provider"]."', '". $_POST["price"][$i]."');";
       $i++;
       $id++;
        }else
        {
            $sql .= "UPDATE price SET price = '".$_POST['price'][$i]."' WHERE id_quote = '".$id."' AND id_provider = '".$_POST['id_provider']."';";
            $i++;
            $id++;
        }
    }  
}

if ($conn->multi_query($sql) === TRUE) {
    echo "Cotações inseridas com sucesso!";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
echo "antes qtde prov";
$sql->store_result();

//Inicia array de criação de email antes de while
$stremail = Array();
$stremail = array_filter($stremail);

//Qtde de provedores
$sqlprovider = "SELECT * FROM providers";
if ($conn->query($sqlprovider) === TRUE) {
    $numprovider = $sqlprovider->num_rows;
    $sqlprovider->close();
    echo "depois qtde prov";
} else {
    echo "Error: " . $sqlprovider . "<br>" . $conn->error;
}
for($z=$idcomp;$z<$idcomp+$_POST['legs'];$z++)
{
//Confere se todos provedores inseriram preços por cotação
$sqlprice = "SELECT * FROM `price` where id_quote=".$z;

if ($conn->query($sqlprice) === TRUE) {
    if($numprovider==$sqlprice->num_rows)
    {echo "cotacao completa".$z;
        $sqlprice->close();
        //Busca provedor com melhor preço
        $sqlcompara = "SELECT id_provider, MIN(price) as price FROM price WHERE id_quote='".$z."'";
        if ($conn->query($sqlcompara) === TRUE) {
            $row = $sqlcompara->fetch_assoc();
            $idprov = row['id_provider'];
            $sqlcompara-->close();
            //Dados do provedor com melhor preço
            $sqlprovider.= " WHERE id_provider='".$idprov."'";
            if ($conn->query($sqlprovider) === TRUE) {
                $row = $sqlprovider->fetch_assoc();
                $company = row['company'];
                $representative = row['representative'];
                $email = row['email'];
                $sqlprovider->close();

            } else {
                echo "Error: " . $sqlprovider . "<br>" . $conn->error;
            }


        } else {
            echo "Error: " . $sqlcompara . "<br>" . $conn->error;
        }

        //Busca Informações da cotação
        $sqlquote = "SELECT * FROM quote WHERE id_quote='".$z."'";
        if ($conn->query($sqlquote) === TRUE) {
            $row = $sqlcompara->fetch_assoc();
            $acft = row['acft'];
            $dt_flight = row['dt_flight'];
            $origin = row['origin'];
            $destination = row['destination'];
            $fbo = row['fbo'];



        $sqlquote->close();
        } else {
            echo "Error: " . $sqlcompara . "<br>" . $conn->error;
        }

        //Envia email de release
        if(empty($stremail[$idprov]))
       {
        $stremail[$idprov] = "TO: ".$company." <br><br> Dear ".$representative.", <br><br>";
        $stremail[$idprov] .= "I would like to request fuel release for the following itinerary: <br><br>";
        $stremail .='<table id="tabela">
       <thead>
           <tr align=center>
               <td width=100px>Tail#</td>
               <td width=100px>Date</td>
               <td width=50px>Origin</td>
               <td width=50px>Destination</td>
               <td width=200px>Handler</td></tr>
               </thead>'; echo "Inicio".$idprov;
       }
       $stremail[$idprov] .= '<tr align=center>
                <td>'.$acft.'</td>
                <td>'.$dt_flight.'</td>
                <td>'.$origin.'</td>
                <td>'.$destination.'</td>
                <td>'.$fbo.'</td>'; echo " add: ".$idprov;

    }echo "cotacao incompleta".$z;

} else {
    echo "Error: " . $sqlprice . "<br>" . $conn->error;
}
}

print_r($stremail);

$conn->close();


?>


</body>
</html>

尝试使用这种格式

mysql_close($sqlprice);

Let's break it down: 让我们分解一下:

$sqlprovider = "SELECT * FROM providers";
if ($conn->query($sqlprovider) === TRUE) {
  $numprovider = $sqlprovider->num_rows;
  $sqlprovider->close();
  echo "depois qtde prov";

You set $sqlprovider to a string , then you query the database with that string. 您将$sqlprovider设置$sqlprovider一个字符串 ,然后使用该字符串查询数据库。 Now if the query is successful (which I assume it is) you expect, somehow, somewhere that $sqlprovider is an object ? 现在,如果查询成功(我认为是成功的),您会以某种方式期望$sqlprovider对象的某个地方?

It isn't, it errors and exits the code and thus nothing afterwards is executed. 并非如此,它会出错并退出代码,因此之后没有执行任何操作。

Perhaps you're looking for: 也许您正在寻找:

if ($result = $conn->query($sqlprovider) === TRUE) {
  $numprovider = $result->num_rows;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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