запрос базы данных с массивом - PullRequest
2 голосов
/ 21 февраля 2011

Я немного фанат php.

Я пытаюсь сделать запрос к моей базе данных с массивом, я пытаюсь подсчитать количество строк, возвращаемых запросом для каждой страны в моембазы данных, а также подсчитать строки для каждой из этих стран с цифрой, равной 1. Используя следующий код:

<?php

include ('mysqli_connect.php'); // indclude mysql connection functions

$countries = array('united states','canada','united kingdom');

foreach($countries as $country){
        //e.g. $r_spain holds the results from the query below with spain as $country
        $r_.$country = mysqli_query($dbc,"SELECT * FROM feelings WHERE country = '$country' AND digit='1'");

        //loop through the results
        while($row = mysqli_fetch_array($r_.$country, MYSQLI_ASSOC)){
                $rowCount = mysqli_num_rows($r_.$country);
                echo $country."=".$rowCount;   
        }      
}

?>

Это сообщение об ошибке, которое я получаю:

Catchableфатальная ошибка: объект класса mysqli_result не может быть преобразован в строку в /home2/designwr/public_html/uwe/notalone/updates/percentage.php в строке 9

, кто-нибудь может указать мне правильное направление?

спасибо, alsweeet

Ответы [ 4 ]

2 голосов
/ 21 февраля 2011

Вы используете конкатенацию строк для имени вашей переменной: $r_.$country является результатом сложения двух строк.

Я бы предложил использовать массив для результирующего набора, например:

$r = array();     // after $countries
....
    $r[$country] = mysqli_query......
1 голос
/ 21 февраля 2011
Change:

$r_.$country

to:

${'r_'.$country}

И удалить цикл (не его содержимое):

while($row = mysqli_fetch_array($r_.$country, MYSQLI_ASSOC))

Итак, в итоге код будет выглядеть так:

<?php

include ('mysqli_connect.php'); // indclude mysql connection functions

$countries = array('united states','canada','united kingdom');

foreach($countries as $country){
        //e.g. $r_spain holds the results from the query below with spain as $country
        ${'r_'.$country} = mysqli_query($dbc,"SELECT * FROM feelings WHERE country = '$country' AND digit='1'");
        $rowCount = mysqli_num_rows(${'r_'.$country});
        echo $country."=".$rowCount;   
}

?>

Ссылки:

http://php.net/manual/en/language.variables.variable.php

http://www.php.net/manual/en/mysqli-result.num-rows.php

0 голосов
/ 21 февраля 2011

ознакомьтесь с руководством по mysqli / query .Там вы найдете простые рабочие примеры, чтобы понять основы.подсчет выполняется оператором count в SQL-запросе.

0 голосов
/ 21 февраля 2011

Я так понимаю, строка 9 -

 $r_.$country = mysqli_query($dbc,"SELECT * FROM feelings WHERE country = '$country' AND digit='1'");

Я не уверен, что вы пытаетесь сделать с $r_.$country = mysqli_query(...);, но это неверный синтаксисИспользовать массив:

$r[$country] = mysqli_query(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...