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

かなり間接的な解決策を提案させてください。
mysqli の代わりに PDO を使い始めると、自分自身に大きな恩恵をもたらすでしょう

上記の関数をすぐに使用できる優れた実装を備えているため、準備されたステートメントを処理するときに 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 に答える