Domanda

Ho questo codice parziale:

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

Che altrimenti funziona bene, tuttavia ottengo un errore:

Il numero di variabili di bind non corrisponde al numero di campi nell'istruzione preparata

Nell'ultima riga che ho pubblicato.

Non sono sicuro di quale sia il problema. Voglio usare alcune colonne separate, ad esempio ARTICLE_DESC. Questo significa che non posso usare select * e devo inserire ciascuno dei nomi di colonna nella query?

modifica: è necessario associare? ci sono vantaggi in termini di sicurezza o prestazioni? Posso anche fare a meno?

È stato utile?

Soluzione

In realtà dovresti impostare i nomi delle colonne anziché usare *.

In questo modo, saprai esattamente quali colonne passare al metodo bind_result.

Altri suggerimenti

Se stai vincolando i risultati, non dovresti farlo con un carattere jolly nella tua query SQL. Pensa a cosa accadrebbe se una colonna fosse aggiunta o rimossa dalla tabella che stai vincolando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top