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

我需要在 mysqli 中得到上面查询的结果。但我不能使用 get_result() 函数,因为它在服务器中不起作用。我在下面找到了这个函数,它工作正常。但该函数无法传递多个参数。请帮我解决这个问题。

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();
}
4

1 回答 1

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

仅此而已

于 2013-05-13T07:13:47.763 回答