Pergunta

Eu tenho esse código parcial:

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

que de outro modo corre OK, porém eu recebo um erro:

O número de variáveis ??de ligação não corresponder número de campos em declaração preparada

Na última linha que eu postei.

Eu não tenho certeza qual é o problema. Eu quero usar algumas colunas independente, por exemplo ARTICLE_DESC. Isso significa que eu não posso usar select *, e deve colocar em cada um dos nomes de coluna na consulta?

edit: é necessário ligar? Há vantagens de segurança ou desempenho a ser obtido? Posso muito bem fazer sem?

Foi útil?

Solução

Realmente você deve definir os nomes das colunas em vez de usando *.

Desta forma, você saberá exatamente quais colunas para passar para o método bind_result.

Outras dicas

Se você está ligando resultados, você não deveria estar fazendo isso com um curinga na sua consulta SQL. Pense o que aconteceria se uma coluna foi adicionado ou removido da tabela que você está vinculativo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top