PHP和MySQLi在一个字符串中执行多个查询

PHP和MySQLi在一个字符串中执行多个查询,php,string,mysqli,mysqli-multi-query,Php,String,Mysqli,Mysqli Multi Query,我有许多变量需要在MySQL数据库中查找,它们的值被数据库条目替换,然后放在一个字符串中显示给最终用户,代码如下 我创建了下面的代码,虽然技术上可行,但看起来非常混乱。基本上,我必须在每个变量出现在字符串中之前直接查找它(使用下面的 这会产生看起来非常混乱的代码,还会导致多个数据库查询,这无疑会降低我的网站速度。有没有一种更有效的方法让我错过了呢 任何帮助都将不胜感激 $conn = new mysqli($servername, $username, $password, $dbname);

我有许多变量需要在MySQL数据库中查找,它们的值被数据库条目替换,然后放在一个字符串中显示给最终用户,代码如下

我创建了下面的代码,虽然技术上可行,但看起来非常混乱。基本上,我必须在每个变量出现在字符串中之前直接查找它(使用下面的

这会产生看起来非常混乱的代码,还会导致多个数据库查询,这无疑会降低我的网站速度。有没有一种更有效的方法让我错过了呢

任何帮助都将不胜感激

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 

$airlinequery = "SELECT * FROM  `airlines` WHERE  `iatacode` =  '$airline' LIMIT 0 , 30;"; 
$depairportquery = "SELECT * FROM  `airportdata` WHERE  `airportcode` =  '$depdest' LIMIT 0 , 30;"; 
$arrairportquery = "SELECT * FROM  `airportdata` WHERE  `airportcode` =  '$arrdest' LIMIT 0 , 30;"; 
$bookingclassquery = "SELECT $bookingclass FROM `bookingclass` WHERE `airline` = '$airline' LIMIT 0 , 30;";
$utctakeoffquery = "SELECT `timezonehours`,`timezoneminutes`,`timezone` FROM `airportdata` WHERE `airportcode`= '$depdest';";
$utcarriveoffquery = "SELECT `timezonehours`,`timezoneminutes`,`timezone` FROM `airportdata` WHERE `airportcode`= '$arrdest';";

if(!$result = $conn->query($airlinequery)){
die('There was an error running the query [' . $conn->error . ']');
}

$result = $conn->query($airlinequery);
    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
        $date=date_create($depdate);
        echo date_format($date,"D d M"). " - ". $airline." ".$flightno;
    }
}


$cabinresult = $conn->query($bookingclassquery);
        if ($cabinresult->num_rows > 0) {
        while($cabinrow = $cabinresult->fetch_assoc()) {
        echo $cabinrow[$bookingclass];
        }
    }


$dresult = $conn->query($depairportquery);
    if ($dresult->num_rows > 0) {
    while($drow = $dresult->fetch_assoc()) {
    $arr = explode(' ',trim($drow['airportname']));
        if ($arr[0] == $drow['cityname']){
        $drow['cityname'] = "";
            }else{
        $drow['cityname']=  " ".$drow['cityname'];  
    }


    echo "Depart: " .$drow['airportname'].",".$drow['cityname']." (".$drow['airportcode'].") at " . $deptime."<br>";

}
}


$aresult = $conn->query($arrairportquery);
    if ($aresult->num_rows > 0) {
    while($arow = $aresult->fetch_assoc()) {
    $arr = explode(' ',trim($arow['airportname']));
        if ($arr[0] == $arow['cityname']){
        $arow['cityname'] = "";
            }else{
        $arow['cityname']=  " ".$arow['cityname'];
        }

     echo "Arrive: " .$arow['airportname'].",".$arow['cityname']." (".$arow['airportcode'].") at " . $arrtime .$nextday."
";

$arrdate ="";        
    }
} 


$conn->close();
$conn=newmysqli($servername、$username、$password、$dbname);
如果($conn->connect\u错误){
die(“连接失败:”.$conn->connect\U错误);
} 
$airlinequery=“从`airlines`中选择*,其中`iatacode`='$airliner'限制为0,30;”;
$depairportquery=“从`airportdata`中选择*,其中`airportcode`='$depdest'限制为0,30;”;
$arrairportquery=“从`airportdata`中选择*,其中`airportcode`='$arrdest'限制为0,30;”;
$bookingclassquery=“从`bookingclass`中选择$bookingclass,其中`airline`='$airline'限制为0,30;”;
$utctakeoffquery=“从`airportdata`中选择`timezonehours`、`timezoneminutes`、`timezone`,其中`airportcode`='$depdest';”;
$utcarriveoffquery=“从`airportdata`中选择`timezonehours`、`timezoneminutes`、`timezone`,其中`airportcode`='$arrdest';”;
如果(!$result=$conn->query($airlinequery)){
die('运行查询['.$conn->error.]'时出错);
}
$result=$conn->query($airlinequery);
如果($result->num_rows>0){
而($row=$result->fetch_assoc()){
$date=date\u创建($depdate);
回音日期格式($date,“D D M”)。“-”$airline.“$flightno;
}
}
$cabinresult=$conn->query($bookingclassquery);
如果($cabinresult->num_rows>0){
而($cabinrow=$cabinresult->fetch_assoc()){
echo$cabinrow[$bookingclass];
}
}
$dresult=$conn->query($depairportquery);
如果($dresult->num\u rows>0){
而($drow=$dresult->fetch_assoc()){
$arr=爆炸('',修剪($drow['airportname']);
如果($arr[0]=$drow['cityname'])){
$drow['cityname']=“”;
}否则{
$drow['cityname']=''.$drow['cityname'];
}
在“$deptime.”处回显“出发:“$drow['airportname']”、“$drow['cityname']”、“(“$drow['airportcode']”)字样);
}
}
$aresult=$conn->query($arrairportquery);
如果($aresult->num\u rows>0){
而($arow=$aresult->fetch_assoc()){
$arr=爆炸('',修剪($arow['airportname']);
如果($arr[0]=$arow['cityname'])){
$arow['cityname']=“”;
}否则{
$arow['cityname']=''.$arow['cityname'];
}
echo在“$arrtime.$nextday”到达“$arow['airportname']”、“$arow['cityname']”、“(“$arow['airportcode']”)
";
$arrdate=“”;
}
} 
$conn->close();

这应该是一条评论,但有点长,很难阅读

选择*

为什么不需要表中的所有属性,却要从表中选择它们?您还没有提供表结构,这些表结构将为您提供有关解决方案的许多选择。如果这些问题已经得到解决,我们可能已经能够建议工会或观点是否合适

while($row = $result->fetch_assoc()) {
    $date=date_create($depdate);
    echo date_format($date,"D d M"). " - ". $airline." ".$flightno;
}
什么是$depdate$航空公司$航班号?这些应该是从$row检索的值吗?您的循环体从不引用$row。您的所有查询都存在类似的问题

while($row = $result->fetch_assoc()) {
    $date=date_create($depdate);
    echo date_format($date,"D d M"). " - ". $airline." ".$flightno;
}