MySQL переменные связывания - PullRequest
0 голосов
/ 30 января 2009

У меня есть этот частичный код:

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 * и должен указывать имена столбцов в запросе?

edit: нужно ли связывать? Есть ли преимущества в плане безопасности или производительности? Могу ли я так же обойтись без?

Ответы [ 2 ]

2 голосов
/ 30 января 2009

Если вы связываете результаты, вам не следует делать это с подстановочным знаком в вашем SQL-запросе. Подумайте, что произойдет, если столбец будет добавлен или удален из таблицы, которую вы связываете.

2 голосов
/ 30 января 2009

На самом деле вы должны устанавливать имена столбцов, а не использовать *.

Таким образом, вы будете точно знать, какие столбцы передать методу bind_result.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...