Frage

Ich habe diesen Teil-Code:

if ($getRecords = $con->prepare("SELECT * FROM AUCTIONS WHERE ARTICLE_NO = ?"))

{

$getHtml = $con->prepare("SELECT ARTICLE_DESC FROM AUCTIONS WHERE ARTICLE_NO = ?");

$getHtml->bind_param("i", $pk);

$getHtml->execute();

$getHtml->bind_result($ARTICLE_DESC);



$getRecords->bind_param("i", $pk); 

$getRecords->execute(); 

$getRecords->bind_result($ARTICLE_NO, $ARTICLE_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);

, die sonst OK läuft, jedoch bekomme ich einen Fehler:

Anzahl der Bind-Variablen nicht Anzahl der Felder in vorbereiteter Anweisung übereinstimmen

In der letzten Zeile ich gepostet.

Ich bin nicht sicher, was das Problem ist. Ich möchte ein paar Spalten separat, zB ARTICLE_DESC verwenden. Heißt das, ich nicht select * verwenden kann und muß in jedem der Spaltennamen in der Abfrage setzen?

edit: ist es notwendig, zu binden? gibt es Sicherheit oder Leistungsvorteile gewonnen werden? Kann ich ohne genausogut tun?

War es hilfreich?

Lösung

Wirklich sollten Sie die Namen der Spalten werden Einstellung eher dann * verwendet wird.

Auf diese Weise werden Sie genau wissen, welche Spalten der bind_result Methode zu übergeben.

Andere Tipps

Wenn Sie die Ergebnisse verbindlich sind, sollten Sie diese nicht in der SQL-Abfrage mit einem Platzhalter tun. Denken Sie an, was passieren würde, wenn eine Spalte hinzugefügt wurde oder aus der Tabelle entfernen Sie bindend sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top