具有多个参数的mysqli get_result替代方案

时间:2013-05-13 07:00:26

标签: php mysqli

SELECT * FROM `ware_house_indents` WHERE `has_cancel` = ? AND `eid`= ? 

我需要在mysqli中获得高于查询的结果。但我不能使用get_result()函数,因为它不能在server.i中找到这个功能,它工作正常。但是这个函数不能传递多个参数。请帮我解决这个问题。

function db_bind_array($stmt, &$row)
{
    $md = $stmt->result_metadata();
    $params = array();
    while($field = $md->fetch_field()) {
        $params[] = &$row[$field->name];
    }
    return call_user_func_array(array($stmt, 'bind_result'), $params);
}
function db_query($db, $query, $types, $params)
{
    $stmt = $db->prepare($query);
    $bindRet = call_user_func_array(array($stmt,'bind_param'),
                                    array_merge(array($types), $params));
    $stmt->execute();
    $result = array();
    if (db_bind_array($stmt, $result) !== FALSE) {
        return array($stmt, $result);
    }
    $stmt->close();
    return FALSE;
}
if (($qryRes = db_query($mysqli, $sql, 'i', array(&$var))) !== FALSE) {
    $stmt = $qryRes[0];
    $row = $qryRes[1];
    while ($stmt->fetch()) {
        print_r($row);
    }
    $stmt->close();
}

1 个答案:

答案 0 :(得分:1)

让我建议你一个非常间接的解决方案 如果开始使用PDO而不是mysqli

,你会给自己一个巨大的帮助

在处理预准备语句时没有mysqli缺点,因为它可以更好地实现上述功能。因此,它可以让您将数据分成几行:

$sql = "SELECT * FROM ware_house_indents WHERE has_cancel = ? AND eid= ?";
$stm = $pdo->prepare($sql);
$stm->execute(array($cancel,$eid));
$data = $stm->fetchAll(); // or fetch() if you need only one row

那是所有