hazırlanmış bir açıklamada mysqli bağlayıcı alanlar

3 Cevap php

Ben hata alıyorum hangi için, aşağıdaki kodu var:

Warning: mysqli_stmt :: bind_result () [mysqli-stmt.bind-result]: bind değişkenleri sayısı dosyasında hazır açıklamada alanların sayısı eşleşmiyor.

Bu sadece bir uyarı ise, kod hala çalışmak gerekir? Ben bir select * yapmak ve bağlamak ve ayrı ayrı işlemek istediğiniz bir alanı dışında tüm verileri görüntülemek istiyorum. Etrafında herhangi bir şekilde, ya da daha iyi bir yöntem var mı? (Denenmemiş) şu anda benim çözüm getRecords ile sonuçlarına değişkenlerin doğru miktarda bağlamak, ve sonra getHtml ile farklı bir isim olarak ayrı ayrı bağlamak için.

Ne bağlanma advanatges, ve bu gereklidir.

<?php
if (isset($_GET["cmd"]))
  $cmd = $_GET["cmd"]; else
  die("You should have a 'cmd' parameter in your URL");
$id = $_GET["id"];
$con = mysqli_connect("localhost", "user", "password", "db");
if (!$con) {
    echo "Can't connect to MySQL Server. Errorcode: %s\n". mysqli_connect_error();
    exit;
}
$con->set_charset("utf8");
echo "test outside loop";
if($cmd=="GetSaleData") {
    echo "test inside loop";
    if ($getRecords = $con->prepare("SELECT SELECT Product_NO, Product_NAME, SUBTITLE, CURRENT_BID, START_PRICE, BID_COUNT, QUANT_TOTAL, QUANT_SOLD, ACCESSSTARTS, ACCESSENDS, ACCESSORIGIN_END, USERNAME, BEST_BIDDER_ID, FINISHED, WATCH, BUYITNOW_PRICE, PIC_URL, PRIVATE_AUCTION, AUCTION_TYPE, ACCESSINSERT_DATE, ACCESSUPDATE_DATE, CAT_DESC, CAT_PATH, COUNTRYCODE, LOCATION, CONDITIONS, REVISED, PAYPAL_ACCEPT, PRE_TERMINATED, SHIPPING_TO, FEE_INSERTION, FEE_FINAL, FEE_LISTING, PIC_XXL, PIC_DIASHOW, PIC_COUNT, ITEM_SITE_ID FROM Sales WHERE Product_NO = ?")) FROM SaleS WHERE PRODUCT_NO = ?")) {
    	$getHtml = $con->prepare("SELECT PRODUCT_DESC FROM SaleS WHERE PRODUCT_NO = ?");
    	$getHtml->bind_param("i", $id);
    	$getHtml->execute();
    	$getHtml->bind_result($PRODUCT_DESC);
    	$getRecords->bind_param("i", $id);
    	$getRecords->execute();
    	$getRecords->bind_result($PRODUCT_NO, $PRODUCT_NAME, $SUBTITLE, $CURRENT_BID, $START_PRICE, $BID_COUNT, $QUANT_TOTAL, $QUANT_SOLD, $ACCESSSTARTS, $ACCESSENDS, $ACCESSORIGIN_END, $USERNAME, $BEST_BIDDER_ID, $FINISHED, $WATCH, $BUYITNOW_PRICE, $PIC_URL, $PRIVATE_Sale, $Sale_TYPE, $ACCESSINSERT_DATE, $ACCESSUPDATE_DATE, $CAT_DESC, $CAT_PATH, $COUNTRYCODE, $LOCATION, $CONDITIONS, $REVISED, $PAYPAL_ACCEPT, $PRE_TERMINATED, $SHIPPING_TO, $FEE_INSERTION, 
    	$FEE_FINAL, $FEE_LISTING, $PIC_XXL, $PIC_DIASHOW, $PIC_COUNT, $ITEM_SITE_ID);
    	while ($getRecords->fetch()) {
    		// operations snipped for question
    		echo "<h1>".$PRODUCT_NAME."</h1>
<div id='leftlayer' class='leftlayer'>
<p><strong>Username: </strong>".$USERNAME."
<p><strong>Shipping to: </strong> ". $country ."
<img src='./images/".$id.".jpg"' width='".$imageSize["width"]."' height='".$imageSize["height"]."'>
</div>
<div id='rightlayer'> 
</div>";
//
} 
}
}
}

Ben de ne benim img src deyimi ile yanlış ... Ben böyle bir taksim veya teklif gibi temel şey mising hissettiğimi bilmenizi isterim.

edit: kodu şimdi sonra, sütun adları * yerine ancak while döngüsü girilen asla ve dolayısıyla hiçbir eylemler gerçekleştirilir bir hata görüntüler.

3 Cevap

Sen explicity yerine kullanım * daha da SELECT sütun adlarını belirtmeleri gerekebilir, as per the examples for MySQLi bind_result().

Img hattına ilişkin olarak, fazladan bir "sonra. Jpg var

<img src='./images/".$id.".jpg"' width=

olmalıdır

<img src='./images/".$id.".jpg width=

"Kullanarak dize yine değişkenler için ayrıştırılması neden olacaktır çünkü Ayrıca, aslında dize patlak ve değişkenleri birleştirmek gerekmez.

Ben sorunu tahmin ediyorum burada:

$getRecords->bind_result($PRODUCT_NO, $PRODUCT_NAME, $SUBTITLE, $CURRENT_BID, $START_PRICE, $BID_COUNT, $QUANT_TOTAL, $QUANT_SOLD, $ACCESSSTARTS, $ACCESSENDS, $ACCESSORIGIN_END, $USERNAME, $BEST_BIDDER_ID, $FINISHED, $WATCH, $BUYITNOW_PRICE, $PIC_URL, $PRIVATE_Sale, $Sale_TYPE, $ACCESSINSERT_DATE, $ACCESSUPDATE_DATE, $CAT_DESC, $CAT_PATH, $COUNTRYCODE, $LOCATION, $CONDITIONS, $REVISED, $PAYPAL_ACCEPT, $PRE_TERMINATED, $SHIPPING_TO, $FEE_INSERTION, 
        $FEE_FINAL, $FEE_LISTING, $PIC_XXL, $PIC_DIASHOW, $PIC_COUNT, $ITEM_SITE_ID);

Muhtemelen bir sütun eksik. Eğer sonuç kümesinde alınan daha az sütun varsa kod çalışacaktır.

Img etiketinin gelince, XHMTL üzerinde iseniz bunu kapatmak zorunda olacaktır.

Bu satırı sabitleme ile başlamak istiyorum:

if ($getRecords = $con->prepare("SELECT SELECT Product_NO, Product_NAME, SUBTITLE, CURRENT_BID, START_PRICE, BID_COUNT, QUANT_TOTAL, QUANT_SOLD, ACCESSSTARTS, ACCESSENDS, ACCESSORIGIN_END, USERNAME, BEST_BIDDER_ID, FINISHED, WATCH, BUYITNOW_PRICE, PIC_URL, PRIVATE_AUCTION, AUCTION_TYPE, ACCESSINSERT_DATE, ACCESSUPDATE_DATE, CAT_DESC, CAT_PATH, COUNTRYCODE, LOCATION, CONDITIONS, REVISED, PAYPAL_ACCEPT, PRE_TERMINATED, SHIPPING_TO, FEE_INSERTION, FEE_FINAL, FEE_LISTING, PIC_XXL, PIC_DIASHOW, PIC_COUNT, ITEM_SITE_ID FROM Sales WHERE Product_NO = ?")) FROM SaleS WHERE PRODUCT_NO = ?")) {

Ben bunun yerine bu gibi görünmelidir varsayarak kulüpler:

if ($getRecords = $con->prepare("SELECT Product_NO, Product_NAME, SUBTITLE, CURRENT_BID, START_PRICE, BID_COUNT, QUANT_TOTAL, QUANT_SOLD, ACCESSSTARTS, ACCESSENDS, ACCESSORIGIN_END, USERNAME, BEST_BIDDER_ID, FINISHED, WATCH, BUYITNOW_PRICE, PIC_URL, PRIVATE_AUCTION, AUCTION_TYPE, ACCESSINSERT_DATE, ACCESSUPDATE_DATE, CAT_DESC, CAT_PATH, COUNTRYCODE, LOCATION, CONDITIONS, REVISED, PAYPAL_ACCEPT, PRE_TERMINATED, SHIPPING_TO, FEE_INSERTION, FEE_FINAL, FEE_LISTING, PIC_XXL, PIC_DIASHOW, PIC_COUNT, ITEM_SITE_ID FROM Sales WHERE Product_NO = ?")) {