首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >警告: SQLSTATE[HY093]::execute()[ PDOStatement::execute():PDOStatement::execute()[PDOStatement]:PDOStatement:

警告: SQLSTATE[HY093]::execute()[ PDOStatement::execute():PDOStatement::execute()[PDOStatement]:PDOStatement:
EN

Stack Overflow用户
提问于 2013-03-25 14:04:29
回答 2查看 168关注 0票数 1

警告: PDOStatement::execute() pdostatement.execute: SQLSTATEHY093:无效参数编号:绑定变量的编号与第68行C:\wamp\www\pegasus\classes\generic.class.php中的标记编号不匹配

类Add_consum扩展了泛型{

代码语言:javascript
运行
复制
private $result;
private $error;
private $impexp;
private $sea_air;
private $customername;
private $customerreference;
private $homeconsumption;
private $invoicevalue;
private $currency;
private $mbl_hbl;
private $vesselname;
private $lcl_fcl;
private $noofcontainers;
private $sft_containers;
private $fcl_containerno;
private $weight;
private $noofpallets;
private $itemdescripion;
private $suppliersdetails;
private $cif_fob;
private $blnumer;
private $bl_date;

function __construct() {

    if(isset($_POST['searchimpexp'])) {
        $this->searchimpexp();
        exit();
    }
// jQuery form validation
    parent::checkExists();

    if(isset($_POST['add_consum'])) {
        $this->impexp = parent::secure($_POST['impexp']);
        $this->sea_air = parent::secure($_POST['sea_air']);
        $this->customername = parent::secure($_POST['customername']);
        $this->customerreference = parent::secure($_POST['customerreference']);
        $this->homeconsumption = parent::secure($_POST['homeconsumption']);
        $this->invoicevalue = parent::secure($_POST['invoicevalue']);
        $this->currency = parent::secure($_POST['currency']);
        $this->mbl_hbl = parent::secure($_POST['mbl_hbl']);
        $this->vesselname = parent::secure($_POST['lcl_fcl']);
        $this->lcl_fcl = parent::secure($_POST['customerreference']);
        $this->noofcontainers = parent::secure($_POST['noofcontainers']);
        $this->sft_containers = parent::secure($_POST['sft_containers']);
        $this->fcl_containerno = parent::secure($_POST['fcl_containerno']);
        $this->weight = parent::secure($_POST['weight']);
        $this->noofpallets = parent::secure($_POST['noofpallets']);
        $this->itemdescripion = parent::secure($_POST['itemdescripion']);
        $this->suppliersdetails = parent::secure($_POST['suppliersdetails']);
        $this->cif_fob = parent::secure($_POST['cif_fob']);
        $this->blnumer = parent::secure($_POST['blnumer']);
        $this->bl_date = parent::secure($_POST['bl_date']);

        // Confirm all details are correct
        $this->verify();

        // Create the user
        $this->addconsum();

        if(!empty($this->error)) parent::displayMessage($this->error);
            else echo $this->result;
        exit();

    }

}

/** @todo: Should be in a different class, not add_consum. */
private function searchimpexp() {

    if(empty($_POST['searchimpexp'])) return false;

    $sql = array( ':searchQ' => $_POST['searchimpexp'] . '%' );
    $sql = "SELECT distinct username as suggest, user_id
            FROM login_users
            WHERE username LIKE :searchQ
            OR name LIKE :searchQ
            OR user_id LIKE :searchQ
            ORDER BY username
            LIMIT 0, 5";

    $stmt = parent::query($sql);

    if ( $stmt->rowCount() < 1 ) {
        echo '<h3>' . _('No suggestions') . '</h3>
              <p class="help-block">' . _('Try searching by username, name, or user id.') . '</p>';
        return false;
    }

    echo '<h2>' . _('Suggestions') . '</h2>';

    while($suggest = $stmt->fetch(PDO::FETCH_ASSOC))
        echo "<p><a href='users.php?uid=" . $suggest['user_id'] . "'>" . $suggest['suggest'] . "</a></p>\n";

}

//如果存在公共函数getPost($var),则返回值{

代码语言:javascript
运行
复制
    if(!empty($this->$var)) {
        return $this->$var;
    } else return false;

}

private function verify() {

    if(empty($this->impexp)) {
        $this->error = '<div class="alert alert-error">'._('You must enter a impexp.').'</div>';
        return false;
    }

    if(empty($this->sea_air)) {
        $this->error = '<div class="alert alert-error">'._('You must enter a seaair.').'</div>';
        return false;
    }

    if(empty($this->customername)) {
        $this->error = '<div class="alert alert-error">'._('You must enter a customername.').'</div>';
        return false;
    }



}

私有函数addconsum() {

代码语言:javascript
运行
复制
    if (!empty($this->error)) return false;

    $params = array(
        ':impexp'           => $this->impexp,
        ':sea_air'          => $this->sea_air,
        ':customername'     => $this->customername,
        ':homeconsumption'  => $this->customerreference,
        ':homeconsumption'  => $this->homeconsumption,
        ':invoicevalue'     => $this->invoicevalue,
        ':currency'         => $this->currency,
        ':mbl_hbl'          => $this->mbl_hbl,
        ':vesselname'       => $this->vesselname,
        ':lcl_fcl'          => $this->lcl_fcl,
        ':noofcontainers'   => $this->noofcontainers,
        ':sft_containers'   => $this->sft_containers,
        ':fcl_containerno'  => $this->fcl_containerno,
        ':weight'           => $this->weight,
        ':noofpallets'      => $this->noofpallets,
        ':itemdescripion'   => $this->itemdescripion,
        ':suppliersdetails' => $this->suppliersdetails,
        ':cif_fob'          => $this->cif_fob,
        ':blnumer'          => $this->blnumer,
        ':bl_date'          => $this->bl_date,
    );

父级::query(“INSERT INTO add_consignment (impexpsea_aircustomernamecustomerreferencehomeconsumptioninvoicevaluecurrencymbl_hbl,D12),D13,D14,D15,D16,D17,D18,D19,D20,D21,D22,D23)值(:impexp,:sea_air,:customername,:customerreference,:homeconsumption,:invoicevalue,:currency,:mbl_hbl,D23:vesselname,:lcl_fcl,:noofcontainers,:sft_containers,:fcl_containerno,:weight,:noofpallets,:itemdescripion,:suppliersdetails,:cif_fob,:blnumer,:bl_date);",$params);}

} $addconsum =新的Add_consum();

EN

回答 2

Stack Overflow用户

发布于 2013-03-25 14:11:06

您的问题似乎是您没有将值绑定到您的查询:

代码语言:javascript
运行
复制
$stmt = parent::query($sql);
$stmt->bindValue( ':searchQ', $_POST['searchimpexp'], PDO::PARAM_STR );
票数 0
EN

Stack Overflow用户

发布于 2013-03-25 14:46:03

代码:

代码语言:javascript
运行
复制
    $sql = array( ':searchQ' => $_POST['searchimpexp'] . '%' );
    $sql = "SELECT distinct username as suggest, user_id
            FROM login_users
            WHERE username LIKE :searchQ
            OR name LIKE :searchQ
            OR user_id LIKE :searchQ
            ORDER BY username
            LIMIT 0, 5";

    $stmt = parent::query($sql);

将仅设置

代码语言:javascript
运行
复制
$stmt = parent::query("SELECT distinct username as suggest, user_id
                FROM login_users
                WHERE username LIKE :searchQ
                OR name LIKE :searchQ
                OR user_id LIKE :searchQ
                ORDER BY username
                LIMIT 0, 5");

设置数组的$sql是无用的,因为当$sql设置select语句时,它会被覆盖。

无效的参数数量:绑定变量的数量与令牌的数量不匹配意味着查询内的变量的nr不是提供给PDO-object的值的数量。我不确定函数parent::query做了什么,但应该使用prepare-statement。

你必须做一些像这样的事情

代码语言:javascript
运行
复制
<?php

$statement = parent::query-prepare("SELECT distinct username as suggest, user_id
                    FROM login_users
                    WHERE username LIKE :searchQ
                    OR name LIKE :searchQ
                    OR user_id LIKE :searchQ
                    ORDER BY username
                    LIMIT 0, 5");
$statement->execute(array(':searchQ' => $_POST['searchimpexp'] . '%'));     
$row = $statement->fetchAll();

?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15608617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档