Php 发送变量以绑定参数错误

Php 发送变量以绑定参数错误,php,mysql,Php,Mysql,我有这个查询,我需要MYSQL查询忽略WHERE子句中的空变量,并将发送变量发送到bind_param 这是密码 <?php /** * Created by PhpStorm. * User: YousefAltaf * Date: 11/1/2015 * Time: 11:40 AM */ //post vars $institute = $_POST['institute']; if (isset(

我有这个查询,我需要MYSQL查询忽略WHERE子句中的空变量,并将发送变量发送到
bind_param

这是密码

<?php
    /**
     * Created by PhpStorm.
     * User: YousefAltaf
     * Date: 11/1/2015
     * Time: 11:40 AM
     */

    //post vars
    $institute = $_POST['institute'];

    if (isset($_POST['sections'])) {
        $sections = $_POST['sections'];
    }

    if (isset($_POST['division'])) {
        $division = $_POST['division'];
    }

    if (isset($_POST['level'])) {
        $level = $_POST['level'];
    }

    //check empty var
    $where = "WHERE a.institute =?";
    $bind = "i";
    $prams = "$"."institute, ";
    if (!empty($sections)) {
        $where .= " AND a.section =?";
        $bind .= "i";
        $prams .= "$"."sections, ";
    }

    if (!empty($division)) {
        $where .= " AND a.division =?";
        $bind .= "i";
        $prams .= "$"."division, ";
    }

    if (!empty($level)) {
        $where .= " AND a.phase =?";
        $bind .= "i";
        $prams .= "$"."level";
    }

    //var_dump($institute, $sections, $division, $level);
    var_dump($bind);
    print_r ($prams);
    if ($getSearch = $db->prepare("SELECT
    a.*, a.id AS stud_id, b.id, b.ins_name, c.id, c.sec_name, d.id, d.div_name
    FROM student_basic_info AS a
    JOIN institutes AS b ON (a.institute = b.id)
    CROSS JOIN ins_sections AS c ON (a.section = c.id)
    CROSS JOIN ins_division AS d ON (a.division = d.id)
    $where GROUP BY a.id
    ")
    ) {

        $studSearch = array();
        $getSearch->bind_param('iii', $prams);

    } else {
        printf("Errormessage: %s\n", $db->error);
    }
    if ($getSearch->execute()) {
        $results = $getSearch->get_result();
        while ($vStud = mysqli_fetch_array($results)) {
            $studSearch[] = $vStud;
            ?>

得到

警告:mysqli_stmt::bind_param():类型中的元素数 定义字符串与绑定变量的数量不匹配


如果(!empty($level)){$where.=“和a.phase=?”;$bind.=“i”;$prams.=“$”“level”;}
是否正确?令人困惑的是,它只是查看它是否发布了($getSearch=$db->prepare(“选择a.*,a.id作为stud\u id,b.id,b.ins\u name,c.id,c.sec\u name,d.id,d.div\u name从学生基本信息中作为b ON加入学院(a.institute=b.id)作为c ON交叉加入部分(a.section=c.id)在(a.division=d.id)上按d进行交叉连接,其中a.phase=:i和a.level=:i按a.id分组“和
$getSearch->bind_参数('ii',数组(2,3))举个例子;
@A-2-A其中一个建议是,
$prams是一个包含3个值的字符串,您需要3个字符串,每个字符串包含1个值。因此,在这种情况下,绑定函数有4个单独的参数。
这可能会帮助您,事实上我不知道如何单独绑定每个值:(请向我们展示您试图修改的整个SQL查询字符串,好吗?