[英]Nothing happens after smt->close();
我試圖在代碼的某些部分中使用echo進行調試,我發現在使用$sql->close();
命令,什么也不會發生,即使回聲也不會出現。 我在該命令之前和之后使用了回顯。
您可以忽略$ stremail之后的代碼,因為之后我使用了/ * comment ...
如果您需要更多詳細信息,請告訴我,這是我的第二篇文章,如果我錯過了一些事情,對不起。
我希望你能在這方面幫助我...
<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);
讓我們分解一下:
$sqlprovider = "SELECT * FROM providers";
if ($conn->query($sqlprovider) === TRUE) {
$numprovider = $sqlprovider->num_rows;
$sqlprovider->close();
echo "depois qtde prov";
您將$sqlprovider
設置$sqlprovider
一個字符串 ,然后使用該字符串查詢數據庫。 現在,如果查詢成功(我認為是成功的),您會以某種方式期望$sqlprovider
是對象的某個地方?
並非如此,它會出錯並退出代碼,因此之后沒有執行任何操作。
也許您正在尋找:
if ($result = $conn->query($sqlprovider) === TRUE) {
$numprovider = $result->num_rows;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.