Запрос SQL не возвращает значения то бишь отправляет null. Что с ним не так?

Рейтинг: 0Ответов: 1Опубликовано: 05.06.2011

Собственно исходный код

$district = $_POST['district'];
$months = $_POST['months'];

$editions = array();

$sql = "select e.edition_index, e.name, d.id_edition, d.count from edition e join 
        (select count(*) as count,id_edition from commission where id_customer in 
        (select id from userdata where district = ?) and check_state = 1 
        group by id_edition) as d on d.id_edition = e.id";

$stmt = $mysqli->prepare($sql);
$stmt->bind_param("i", $district);      
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($edition_index, $edition_name, $id_edition, $count);

while($stmt->fetch()) {

    $edition = new stdClass;
    $edition->index = $edition_index;
    $edition->name = $edition_name;
    $edition->subscriber_count = $count;
    $edition->id_edition = $id_edition;
    $editions[] = $edition;
}

Вопрос в следующем почему не возвращает значение $id_edition

Ответы

▲ 2

Вы в запросе используете не именованный параметр (where district = ?)), а устанавливаете значении параметра именованного $stmt->bind_param("i", $district);. Тогда надо сделать так:

$sql = "select e.edition_index, e.name, d.id_edition, d.count from edition e join 
        (select count(*) as count,id_edition from commission where id_customer in 
        (select id from userdata where district = :i) and check_state = 1 
        group by id_edition) as d on d.id_edition = e.id";

//Далее Ваш код
$stmt->bind_param(":i", $district);