Question

J'ai ce code partiel:

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

Sinon, cela fonctionne bien, mais je reçois une erreur:

Le nombre de variables de liaison ne correspond pas au nombre de champs dans l'instruction préparée

Sur la dernière ligne que j'ai postée.

Je ne sais pas quel est le problème. Je souhaite utiliser certaines colonnes distinctes, par exemple ARTICLE_DESC. Est-ce que cela signifie que je ne peux pas utiliser select * et que je dois mettre chacun des noms de colonne dans la requête?

modifier: est-il nécessaire de lier? Y a-t-il des avantages en termes de sécurité ou de performances à gagner? Puis-je tout aussi bien m'en passer?

Était-ce utile?

La solution

Vraiment, vous devriez définir les noms des colonnes plutôt que d'utiliser *.

De cette manière, vous saurez exactement quelles colonnes transmettre à la méthode bind_result.

Autres conseils

Si vous liez les résultats, vous ne devriez pas le faire avec un caractère générique dans votre requête SQL. Pensez à ce qui se passerait si une colonne était ajoutée ou supprimée de la table que vous liez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top