Вопрос
У меня есть этот частичный код:
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);
Который в остальном работает нормально, однако я получаю сообщение об ошибке:
Количество переменных привязки не соответствует количеству полей в подготовленном операторе
В последней строке, которую я опубликовал.
Я не уверен, в чем проблема.Я хочу использовать некоторые столбцы отдельно, например ARTICLE_DESC.Означает ли это, что я не могу использовать select * и должен указывать каждое из имен столбцов в запросе?
Редактировать:нужно ли это связывать?можно ли получить преимущества в области безопасности или производительности?Могу ли я с таким же успехом обойтись без этого?
Решение
На самом деле вам следовало бы задавать имена столбцов, а не использовать *.
Таким образом, вы будете точно знать, какие столбцы передавать методу bind_result.
Другие советы
Если вы привязываете результаты, вам не следует делать это с помощью подстановочного знака в вашем SQL-запросе.Подумайте о том, что произошло бы, если бы столбец был добавлен или удален из таблицы, которую вы привязываете.