преобразовать mysql в mysqli процедурный способ для диаграмм Google - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь обновить некоторые диаграммы Google, которые я использую для себя, с mysql на mysqli процедурный способ, и у меня возникают проблемы с воссозданием правильного массива для понимания диаграммы Google. Я думаю, что я очень близко, я что-то теряю. Любая помощь будет приветствоваться.

Это мой старый код:

mysql_select_db($database_localhost, $localhost);
$query_Recordset1 = "select count(*) as count,visible from packs where type=1 and serial=1 group by visible";
$Recordset1 = mysql_query($query_Recordset1, $localhost) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

    $data[0] = array('visible','count');        
    for ($i=1; $i<($totalRows_Recordset1+1); $i++)
    {
        $data[$i] = array(mysql_result($Recordset1, $i-1,'visible'),
            (int) mysql_result($Recordset1, $i-1, 'count'));
    }   

, который дает:

[["visible","count"],["0",266],["1",1466],["2",1],["3",59]]

Но когда я обновляюсь (или пытаюсь обновить код для mysqli):

$query_Recordset1 = "select count(*) as count,visible from packs where type=1 and serial=1 group by visible";
$Recordset1 = mysqli_query($connection,$query_Recordset1) or die(mysqli_error($mysqli));
$row_Recordset1 = mysqli_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysqli_num_rows($Recordset1);

# set heading 
    $data[0] = array('visible','count');    
    for ($i=1; $i<=($totalRows_Recordset1+1); $i++)
              {
                  mysqli_data_seek($Recordset1, $i-1);
                    $data[$i] = array((string) mysqli_fetch_array($Recordset1)['visible'],(int) mysqli_fetch_array($Recordset1)['count']);

              } 

это приводит к:

[["visible","count"],["0",1466],["1",1],["2",59],["3",0],["",0]]

результаты базы данных

, что, очевидно, не соответствует желаемым результатам, поскольку один столбец по какой-то причине смещен на один (см. Значение 266 вообще не выбирается)

1 Ответ

0 голосов
/ 06 августа 2020

Не уверен, почему ваш код структурирован именно так, вы можете значительно упростить его, используя стандартный l oop ....

$query_Recordset1 = "select count(*) as count,visible 
                        from packs 
                        where type=1 and serial=1 
                        group by visible";
$Recordset1 = mysqli_query($connection,$query_Recordset1) or die(mysqli_error($mysqli));

# set heading 
$data = [['visible','count']];    
while ($row_Recordset1 = mysqli_fetch_assoc($Recordset1) )
{
    $data[] =[$row_Recordset1['visible'],(int) $row_Recordset1['count']];
} 

В вашем коде строка .. .

$data[$i] = array((string) mysqli_fetch_array($Recordset1)['visible'],
         (int) mysqli_fetch_array($Recordset1)['count']);

извлекает 2 строки данных, одну для части visible и одну для части count, поэтому данные смещены.

...