سؤال

ولدي البرمجية التالية، والتي أحصل على خطأ:

على تحذير : لmysqli_stmt :: bind_result () [mysqli-stmt.bind-نتيجة]: عدد من المتغيرات مأزق لا يتطابق عدد الحقول في بيان معد سلفا في ملف

إذا هذا هو التحذير فقط، لا ينبغي أن رمز لا تزال تعمل؟ أريد أن تفعل حدد * وعرض كافة البيانات باستثناء حقل واحد، والذي أريد أن ربط والتعامل معها بشكل منفصل. هل هناك أي طريقة حولها، أو طريقة أفضل؟ بلدي الحل في الوقت الراهن (غير مجربة) هو ربط المبلغ الصحيح من المتغيرات إلى النتائج مع getRecords، ومن ثم ربط بشكل منفصل كاسم مختلفة مع getHtml.

ما هي advanatges ملزمة، وغير ذلك ضروريا.

<?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>";
//
} 
}
}
}

وأود أيضا أن أعرف ما هو الخطأ في بلدي IMG SRC بيان ...، أشعر أنني mising شيء الابتدائية مثل خط مائل أو الاقتباس.

وتحرير: كود يعرض الآن خطأ بعد محل * مع أسماء الأعمدة، ولكن حلقة في حين يتم إدخال أبدا، وبالتالي يتم تنفيذ أي إجراءات

هل كانت مفيدة؟

المحلول

وقد تحتاج إلى القول صراحة أسماء الأعمدة في SELECT الخاص بك بدلا من استخدام *، <وأ href = "http://www.php.net/manual/en/mysqli-stmt.bind-result.php" يختلط = "نوفولو noreferrer"> كما في الأمثلة لMySQLi bind_result () .

في ما يتعلق خط IMG، لديك اضافي "بعد .jpg و

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

يجب أن يكون

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

وبالإضافة إلى ذلك، لا تحتاج في الواقع للخروج من سلسلة وسلسلة المتغيرات بسبب استخدام "سيتسبب السلسلة إلى أن تحليل للمتغيرات على أي حال.

نصائح أخرى

وأنا التخمين أن المشكلة هنا:

$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);

وربما كنت في عداد المفقودين العمود. ستعمل التعليمات البرمجية إذا كان لديك أقل من الأعمدة التي تم استردادها في مجموعة النتائج.

وأما بالنسبة للعلامة img، إذا كنت على xhmtl سيكون لديك لإغلاقه.

وأود أن تبدأ عن طريق تحديد هذا السطر:

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 = ?")) {

وأفترض أنه ينبغي أن تبدو هذه بدلا من ذلك:

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 = ?")) {
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top