Pregunta

Tengo este 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 lo contrario funciona bien, sin embargo, aparece un error:

El número de variables de enlace no coincide con el número de campos en la declaración preparada

En la última línea que publiqué.

No estoy seguro de cuál es el problema. Quiero usar algunas columnas separadas, por ejemplo, ARTICLE_DESC. ¿Esto significa que no puedo usar select *, y debo poner cada uno de los nombres de columna en la consulta?

editar: ¿es necesario unir? ¿Se pueden obtener ventajas de seguridad o rendimiento? ¿Puedo también prescindir?

¿Fue útil?

Solución

Realmente deberías configurar los nombres de las columnas en lugar de usar *.

De esta manera, sabrá exactamente qué columnas pasar al método bind_result.

Otros consejos

Si está vinculando resultados, no debería hacerlo con un comodín en su consulta SQL. Piense en lo que sucedería si se agregara o eliminara una columna de la tabla que está vinculando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top