简体   繁体   English

mysqli准备语句问题

[英]mysqli prepare statement issue

I'm having an issue with the below code, and cannot work out what i've done incorrectly in preparing my variables for the MySqli query, can anyone help? 我的以下代码有问题,无法解决在为MySqli查询准备变量时我做错了什么,任何人都可以帮忙吗?

I think it may be in the first parameter within bind_param but really am unsure. 我认为它可能在bind_param中的第一个参数中,但确实不确定。

Thanks In Advance 提前致谢

  <!-- Insert Bootstrap -->
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">

<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<?

include('db.php');

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}   
$id = $_GET['id'];
// Build sql command 
$sqlCommand = "SELECT * FROM queries WHERE id='{$id}'";  
// Execute the query here now  
$query = mysqli_query($conn, $sqlCommand) or die (mysqli_error()); 

//Build Table


// Output the data using a while loop 
while ($row = mysqli_fetch_assoc($query)) { 
echo '<h1>Query Details From Database For Query ID '.$id.'</h1>'; 
if ($_GET['key'] <> $row['key']) {echo '<div class="alert alert-danger" role="alert">The Key Does Not Match!</div>';}
else  {echo '<div class="alert alert-success" role="alert">The Provided Key Matches For This ID</div>';}
        echo '<div class="table-responsive"><table class=table table-bordered>';
        echo '<tr class=striped><td>Field</td><td>Value</td></tr>';
    // Gather all $row values into local variables 
  foreach ($row as $key => $value)  {

            echo '<tr><td>'.$key.'</td><td>'.$value.'</td></tr>';
        }
        echo '</table></div>';
} 
// Free the results  
mysqli_free_result($query);   
// close mysql connection  
mysqli_close($conn); 

// DECIDE WHICH FEEDS TO QUERY

//SEND CURL REQUEST TO RELEVANT FEEDS

//GET THE RESULTS AND ADD TO LOCAL DATABASE
?>
<table>
    <tr><td>Item Key<td>Brand</td><td>Resort</td><td>Price</td></tr>
    <?php
// The file test.xml contains an XML document with a root element
// and at least an element /[root]/title.

if (file_exists('result.xml')) {
    $xml = simplexml_load_file('result.xml');

    foreach ($xml->PackageHoliday as $PackageHoliday){
 echo '<tr><td>'.$PackageHoliday->ItemKey.'</td><td>'.$PackageHoliday->Brand.'</td><td>'.$PackageHoliday->HolidayResort.'</td><td>'.$PackageHoliday->PriceDetails->PricePerAdult.'</td></tr>';
$mysqli = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

$stmt = $mysqli->prepare("INSERT INTO `search_queries`.`search_results`
(
`itemkey`,
`brand`,
`holidayresort`,
`duration`,
`boardbasis`,
`roomtypedescription`,
`deeplinkurl`,
`offerreference`,
`currency`,
`priceperadult`,
`totalpricebeforediscount`,
`totalprice`,
`adjustedprice`,
`mealsincluded`,
`transfersincluded`,
`luggageincluded`,
`hotelidentifiercode`,
`hotelname`,
`starrating`,
`hotelurl`,
`outbounddeparture`,
`outbounddepartureairport`,
`outboundarrival`,
`outboundarrivalairport`,
`outboundflightnumber`,
`outboundairline`,
`inbounddeparture`,
`inbounddepartureairport`,
`inboundarrival`,
`inboundarrivalairport`,
`inboundflightnumber`,
`inboundairline`)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
$stmt->bind_param("sssssssssssssssssssssssssssssssss", $itemkey,$brand,$holidayresort,$duration,$boardbasis,$roomtypedescription,$deeplinkurl,$offerreference,$currency,$priceperadult,$totalpricebeforediscount,$totalprice,$adjustedprice,$mealsincluded,$transfersincluded,$luggageincluded,$hotelidentifiercode,$hotelname,$starrating,$hotelurl,$outbounddeparture,$outbounddepartureairport,$outboundarrival,$outboundarrivalairport,$outboundflightnumber,$outboundairline,$inbounddeparture,$inbounddepartureairport,$inboundarrival,$inboundarrivalairport,$inboundflightnumber,$inboundairline);

$itemkey =  $PackageHoliday->ItemKey;
$brand =  $PackageHoliday->Brand;
$holidayresort =  $PackageHoliday->HolidayResort;
$duration =  $PackageHoliday->Duration;
$boardbasis =  $PackageHoliday->BoardBasis;
$roomtypedescription =  $PackageHoliday->RoomTypeDescription;
$deeplinkurl =  $PackageHoliday->DeeplinkUrl;
$offerreference =  $PackageHoliday->OfferReference;
$currency =  $PackageHoliday->PriceDetails->Currency;
$priceperadult =  $PricePerAdult;
$totalpricebeforediscount =  $PriceDeforeDiscount;
$totalprice =  $TotalPrice;
$adjustedprice =  $AdjustedPrice;
$mealsincluded =  $PackageHoliday->PriceDetails->Extras->MealsIncluded;
$transfersincluded =  $PackageHoliday->PriceDetails->Extras->TransfersIncluded;
$luggageincluded =  $PackageHoliday->PriceDetails->Extras->LuggageIncluded;
$hotelidentifiercode =  $PackageHoliday->HotelDetails->HotelIdentifierCode;
$hotelname =  $PackageHoliday->HotelDetails->HotelName;
$starrating =  $PackageHoliday->HotelDetails->StarRating;
$hotelurl =  $PackageHoliday->HotelDetails->HotelURL;
$outbounddeparture =  $PackageHoliday->FightDetails->Outbound->DepartureDateTime;
$outbounddepartureairport =  $PackageHoliday->FightDetails->Outbound->DepartureAirportCode;
$outboundarrival =  $PackageHoliday->FightDetails->Outbound->ArrivalDateTime;
$outboundarrivalairport =  $PackageHoliday->FightDetails->Outbound->ArrivalAirportCode;
$outboundflightnumber =  $PackageHoliday->FightDetails->Outbound->FlightNumber;
$outboundairline =  $PackageHoliday->FightDetails->Outbound->Airline;
$inbounddeparture =  $PackageHoliday->FightDetails->Inbound->DepartureDateTime;
$inbounddepartureairport =  $PackageHoliday->FightDetails->Inbound->DepartureAirportCode;
$inboundarrival =  $PackageHoliday->FightDetails->Inbound->ArrivalDateTime;
$inboundarrivalairport =  $PackageHoliday->FightDetails->Inbound->ArrivalAirportCode;
$inboundflightnumber =  $PackageHoliday->FightDetails->Inbound->FlightNumber;
$inboundairline = $PackageHoliday->FightDetails->Inbound->Airline;

$stmt->execute();

echo "New records created successfully";

$stmt->close();
$mysqli->close();




}
    // print_r($xml);
} else {
    exit('Failed to open test.xml.');
}
?>
</table>
//DISPLAY RESULTS


?>

error is: 错误是:

Fatal error: Call to a member function bind_param() on a non-object in /home/search/public_html/get-results.php on line 104 致命错误:在第104行的/home/search/public_html/get-results.php中的非对象上调用成员函数bind_param()

I do not use mysqli so I might be well off the mark here but you could perhaps try this: 我不使用mysqli,所以在这里我可能还算不错,但是您可以尝试以下方法:

$stmt =  $mysqli->stmt_init();
if( $mysqli->prepare("INSERT INTO `search_queries`.`search_results`
    (
        `itemkey`,
        `brand`,
        `holidayresort`,
        `duration`,
        `boardbasis`,
        `roomtypedescription`,
        `deeplinkurl`,
        `offerreference`,
        `currency`,
        `priceperadult`,
        `totalpricebeforediscount`,
        `totalprice`,
        `adjustedprice`,
        `mealsincluded`,
        `transfersincluded`,
        `luggageincluded`,
        `hotelidentifiercode`,
        `hotelname`,
        `starrating`,
        `hotelurl`,
        `outbounddeparture`,
        `outbounddepartureairport`,
        `outboundarrival`,
        `outboundarrivalairport`,
        `outboundflightnumber`,
        `outboundairline`,
        `inbounddeparture`,
        `inbounddepartureairport`,
        `inboundarrival`,
        `inboundarrivalairport`,
        `inboundflightnumber`,
        `inboundairline`
    ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)") ){

    $stmt->bind_param("sssssssssssssssssssssssssssssssss", $itemkey,$brand,$holidayresort,$duration,$boardbasis,$roomtypedescription,$deeplinkurl,$offerreference,$currency,$priceperadult,$totalpricebeforediscount,$totalprice,$adjustedprice,$mealsincluded,$transfersincluded,$luggageincluded,$hotelidentifiercode,$hotelname,$starrating,$hotelurl,$outbounddeparture,$outbounddepartureairport,$outboundarrival,$outboundarrivalairport,$outboundflightnumber,$outboundairline,$inbounddeparture,$inbounddepartureairport,$inboundarrival,$inboundarrivalairport,$inboundflightnumber,$inboundairline);

    $itemkey =  $PackageHoliday->ItemKey;
    $brand =  $PackageHoliday->Brand;
    $holidayresort =  $PackageHoliday->HolidayResort;
    $duration =  $PackageHoliday->Duration;
    $boardbasis =  $PackageHoliday->BoardBasis;
    $roomtypedescription =  $PackageHoliday->RoomTypeDescription;
    $deeplinkurl =  $PackageHoliday->DeeplinkUrl;
    $offerreference =  $PackageHoliday->OfferReference;
    $currency =  $PackageHoliday->PriceDetails->Currency;
    $priceperadult =  $PricePerAdult;
    $totalpricebeforediscount =  $PriceDeforeDiscount;
    $totalprice =  $TotalPrice;
    $adjustedprice =  $AdjustedPrice;
    $mealsincluded =  $PackageHoliday->PriceDetails->Extras->MealsIncluded;
    $transfersincluded =  $PackageHoliday->PriceDetails->Extras->TransfersIncluded;
    $luggageincluded =  $PackageHoliday->PriceDetails->Extras->LuggageIncluded;
    $hotelidentifiercode =  $PackageHoliday->HotelDetails->HotelIdentifierCode;
    $hotelname =  $PackageHoliday->HotelDetails->HotelName;
    $starrating =  $PackageHoliday->HotelDetails->StarRating;
    $hotelurl =  $PackageHoliday->HotelDetails->HotelURL;
    $outbounddeparture =  $PackageHoliday->FightDetails->Outbound->DepartureDateTime;
    $outbounddepartureairport =  $PackageHoliday->FightDetails->Outbound->DepartureAirportCode;
    $outboundarrival =  $PackageHoliday->FightDetails->Outbound->ArrivalDateTime;
    $outboundarrivalairport =  $PackageHoliday->FightDetails->Outbound->ArrivalAirportCode;
    $outboundflightnumber =  $PackageHoliday->FightDetails->Outbound->FlightNumber;
    $outboundairline =  $PackageHoliday->FightDetails->Outbound->Airline;
    $inbounddeparture =  $PackageHoliday->FightDetails->Inbound->DepartureDateTime;
    $inbounddepartureairport =  $PackageHoliday->FightDetails->Inbound->DepartureAirportCode;
    $inboundarrival =  $PackageHoliday->FightDetails->Inbound->ArrivalDateTime;
    $inboundarrivalairport =  $PackageHoliday->FightDetails->Inbound->ArrivalAirportCode;
    $inboundflightnumber =  $PackageHoliday->FightDetails->Inbound->FlightNumber;
    $inboundairline = $PackageHoliday->FightDetails->Inbound->Airline;

    $stmt->execute();

    echo "New records created successfully";

    $stmt->close();
    $mysqli->close();
}

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

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