【问题标题】:mysqli bind variables [duplicate]mysqli绑定变量[重复]
【发布时间】:2010-10-04 11:23:57
【问题描述】:

我有这个部分代码:

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:有必要绑定吗?是否可以获得安全或性能优势?我也可以不用吗?

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:

    确实,您应该设置列的名称,而不是使用 *。

    这样,您将确切知道要传递给 bind_result 方法的列。

    【讨论】:

      【解决方案2】:

      如果您要绑定结果,则不应在 SQL 查询中使用通配符。想想如果在您绑定的表中添加或删除列会发生什么。

      【讨论】:

        猜你喜欢
        • 2012-09-24
        • 1970-01-01
        • 2018-03-21
        • 1970-01-01
        • 2018-02-23
        • 2021-08-02
        • 2018-01-29
        • 2018-10-08
        • 2021-10-13
        相关资源
        最近更新 更多