PHP Как поместить часть запроса к БД в функцию

Я бился об этом несколько дней, я наконец сдаюсь и теперь ищу помощи.

У меня есть 2 набора кода, которые работают

Он вызывает приведенный ниже и передает "IS NULL" другой функции, а другая функция отображает данные.

<html>
<head>
   <link rel = "stylesheet" href = "style.css">
   <title>My PHP</title>
</head>
<body>

<div class = "body">

 <?php 
    require_once 'ShowInventory.php';
    DBShowInventory("IS NULL");
 ?> 
 </div>
 </body>
</html>




<?php
function DBShowInventory($WhichInventory){

require_once 'connection.php';
$conn = Connect();

$result = $conn->query("select Description, PartNumber, Serial, Store, Cost, MSRP, DateReceived from inventory where DateSold $WhichInventory;");
echo "</br></br></br>\r\n";
echo "<table class=\"center\"> \r\n";
echo ' <tr>';
echo '    <th>Description</th>';
echo '    <th>Part Number</th>';
echo '    <th>Serial</th>';
echo '    <th>Store</th>';
echo '    <th>Cost</th>';
echo '    <th>MSRP</th>';
echo '    <th>DateReceived</th>';
echo " </tr> \r\n";

while ($row = $result->fetch_assoc()) {
              unset($Description, $PartNumber, $Serial, $Store, $Cost, $MSRP, $DateReceived);
              $Description = $row['Description'];
              $PartNumber = $row['PartNumber'];               
              $Serial = $row['Serial'];
              $Store = $row['Store'];
              $Cost = $row['Cost'];
              $MSRP = $row['MSRP'];
              $DateReceived = $row['DateReceived'];
              echo "<tr> \r\n";
              echo "<td>" .$Description. "</td> \r\n";
              echo "<td>" .$PartNumber. "</td> \r\n";
              echo "<td>" .$Serial. "</td> \r\n";
              echo "<td>" .$Store. "</td> \r\n";  
              echo "<td>";
              echo "₱";
              echo number_format($Cost,2,'.',',');
              echo "</td> \r\n";
              echo "<td>";
              echo "₱";
              echo number_format($MSRP,2,'.',',');
              echo "</td> \r\n";
              echo "<td>" .$DateReceived. "</td> \r\n";           
              echo "</tr> \r\n";

}
echo "</table> \r\n";
}
 ?>

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

Я пробовал это сделать, но все, что у меня получилось, - это одна запись, повторенная 7 раз.

<?php
function DBLookup($DateSold){
require_once 'connection.php';
$conn = Connect();

$result = $conn->query("select Description, PartNumber, Serial, Store, Cost, MSRP, DateReceived from inventory where DateSold $DateSold;");

$row = (array) $result->fetch_assoc();
return $row;
}
?>

Это сценарий, который я хотел использовать для обработки $ row

<html>
<head></head>
<body>

<?php
require_once 'GetMultiRecordFromDB.php';
$row=DBLookup("IS NULL");

    echo "</br></br></br>\r\n";
    echo "<table class=\"center\"> \r\n";
    echo ' <tr>';
    echo '    <th>Description</th>';
    echo '    <th>Part Number</th>';
    echo '    <th>Serial</th>';
    echo '    <th>Store</th>';
    echo '    <th>Cost</th>';
    echo '    <th>MSRP</th>';
    echo '    <th>DateReceived</th>';
    echo " </tr> \r\n";

 foreach($row as $rowdata) {
              unset($Description, $PartNumber, $Serial, $Store, $Cost, $MSRP, $DateReceived);
              $Description = $rowdata['Description'];
              $PartNumber = $rowdata['PartNumber'];               
              $Serial = $rowdata['Serial'];
              $Store = $rowdata['Store'];
              $Cost = $rowdata['Cost'];
              $MSRP = $rowdata['MSRP'];
              $DateReceived = $rowdata['DateReceived'];
              echo "<tr> \r\n";
              echo "<td>" .$Description. "</td> \r\n";
              echo "<td>" .$PartNumber. "</td> \r\n";
              echo "<td>" .$Serial. "</td> \r\n";
              echo "<td>" .$Store. "</td> \r\n";  
              echo "<td>";
              echo "₱";
              echo number_format($Cost,2,'.',',');
              echo "</td> \r\n";
              echo "<td>";
              echo "₱";
              echo number_format($MSRP,2,'.',',');
              echo "</td> \r\n";
              echo "<td>" .$DateReceived. "</td> \r\n";           
              echo "</tr> \r\n";

}

    echo "</table> \r\n";

?>
</body>
</html>

Спасибо, ребята, с нетерпением жду вашего ответа.

См. php.net/manual/mysqli-result.fetch-all.php

Phil 18.09.2018 08:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
1
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чаще вы извлекаете данные в цикле и передаете обратно массив записей ...

function DBLookup($DateSold){
    require_once 'connection.php';
    $conn = Connect();

    $result = $conn->query("select Description, PartNumber, Serial, Store, Cost, MSRP, DateReceived from inventory where DateSold $DateSold;");

    $data = array();
    while ($row = $result->fetch_assoc())  {
       $data[] = $row;
    }
    return $data;
}

Вы должны изучить подготовленные операторы, чтобы защитить себя от различных форм инъекций, но при использовании этого для подстановки это не подходит. Убедитесь, что вы довольны тем, что это открыто для злоупотреблений.

Также было бы «лучше», если бы вы передали соединение в метод, поэтому

function DBLookup($DateSold, $conn){ 

Поскольку это позволяет вам управлять используемым соединением, а не функциями, всегда создающими свои собственные.

Большое спасибо, Найджел, это сработало как шарм. Я ужасно себя чувствую из-за того, что задаю такой вопрос новичку. Опять же, я новичок.

Les 26.09.2018 07:49

Другие вопросы по теме