Вставка данных таблицы MySQL в массив PHP - PullRequest
0 голосов
/ 23 января 2019

Я работаю над сайтом для бизнеса, которым владею, и немного устала от своих PHP и SQL.Мне удалось создать макет массива магазинов / инвентаря того, что я хочу в PHP, но я застрял при попытке вставить данные таблицы из базы данных MySQL в мой массив PHP.То, что я пытаюсь сделать, это дублировать мой макет, но вместо того, чтобы извлекать данные из определенного массива (ов) в моем inventoryArray.php, я бы хотел получить данные из таблицы, которую я создал в MySQL.

Макет выглядит следующим образом:

shop.php (текущий):

<?php foreach ($inventory as $handgun) {?>
    <div class="column">
        <h5><?php echo "$handgun[model]"?></h5>
        <img class="thumbnail"
            src="assets/style/images/inventory/pistols/<?php echo "$handgun[img]" ?>.png">
        <table class="shopTables">
            <tr>
                <th>MPN:</th>
                <td><?php echo "$handgun[mpn]"?></td>
            </tr>
            <tr>
                <th>UPC:</th>
                <td><?php echo "$handgun[upc]"?></td>
            </tr>
            <tr>
                <th>Accessories:</th>
                <td><?php echo "$handgun[accessories]"?></td>
            </tr>
            <tr>
                <th>Description:</th>
                <td><?php echo "$handgun[description]"?></td>
            </tr>
        </table>
        <a href="product-page.php" class="button expanded">View</a>
    </div>
<?php } ?>

inventoryArray.php (до):

    <?php
    $inventory = array(
         array(
             'action'        => "Striker-fired",
             'category'      => "Pistols",
             'cal_ga'        => "9mm",
             'manufacturer'  => "FN Herstal",
             'model'         => "FN 509 Midsize",
             'UPC'           => "845737010010",
             'img'           => "FN509M",
             'price'         => "$649"
         ),
         array(
             'action'        => "SA/DA",
             'category'      => "Pistols",
             'cal_ga'        => "9mm",
             'manufacturer'  => "CZ USA",
             'model'         => "CZ P01",
             'UPC'           => "806703911991",
             'img'           => "CZP01",
             'price'         => "$627"
         )
     );
    ?>

Я не изменилсячто-нибудь из shop.php, следующее - моя попытка использовать данные из моей таблицы MySQL в моем inventoryArray.php файле:

inventoryArray.php (после):

require_once ('../mysqli_connect.php');
$query = "SELECT * FROM firearms";

$response = @mysqli_query($dbc, $query);
while ($row= mysqli_fetch_array($response)) {
    $inventory = array(
        array(
            'model' => $row['model'],
            'img' => $row['img'],
            'mpn' => $row['mpn'],
            'upc' => $row['upc'],
            'accessories' => $row['accessories'],
            'description' => $row['description']
        )
    );
}

mysqli_close($dbc);

Хотя при этом вставляетсяданные из моей таблицы и в мой массив, вставка нового инвентаря в мою таблицу SQL не создаст новый вложенный массив, похожий на мой макет.Вместо этого он перезаписывает исходный массив.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Просто извлеките ассоциативный массив строки в новый массив и динамически добавьте к нему:

while ($row = mysqli_fetch_assoc($response)) {
    $inventory[] = $row;
}

На самом деле вы можете сделать это:

while ($inventory[] = mysqli_fetch_assoc($response));

Если в таблице есть еще столбцы и если вы не хотите их (не имеет значения), выберите только те, которые вам нужны:

$query = "SELECT model, img, mpn, upc, accessories, description FROM firearms";
0 голосов
/ 23 января 2019

Перезаписывается, так как вы определяете переменную в каждом цикле.Вместо

while ($row= mysqli_fetch_array($response)) {
    $inventory = array(
        array(
            'model' => $row['model'],
            'img' => $row['img'],
            'mpn' => $row['mpn'],
            'upc' => $row['upc'],
            'accessories' => $row['accessories'],
            'description' => $row['description']
        )
    );
}

Определите $inventory перед циклом, а затем добавьте к нему, используя $inventory[]

$inventory = array();
while ($row= mysqli_fetch_array($response)) {
    $inventory[] =
        array(
            'model' => $row['model'],
            'img' => $row['img'],
            'mpn' => $row['mpn'],
            'upc' => $row['upc'],
            'accessories' => $row['accessories'],
            'description' => $row['description']
        );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...