簡體   English   中英

如何在mysqli_fetch_array php中獲取第一個值

[英]How to get the first value in mysqli_fetch_array php

我有這段代碼,可以使用 php mysqli_fetch_array 和 while 循環完美地從數據庫中獲取所有值


    $pid = 1;                                             
    $sqlSI = "SELECT * FROM productcolor where proId='$pid'";
    $SIresult = mysqli_query($conn, $sqlSI);
        
    if (mysqli_num_rows($SIresult) == 1) {
        echo ' <h4>Color</h4>
        <div class="colors">';

        while ($row = mysqli_fetch_array($SIresult)) {
            ?>

        <a href="javascript:void(0)" class="s-colors" data-color="<?= $row['colors']; ?>" style="background-color: <?= $row['colors']; ?>;"></a>

        <script>
            $(document).ready(function () {
                $(".pdt-color-cart").val("<?= $row['colors']; ?>");
            })
        </script>

<?php
        }
        echo ' </div>';
    }
    else if (mysqli_num_rows($SIresult) > 1) {
        
        $rowed = mysqli_fetch_array($SIresult);
        echo $rowed['colors'];

        echo ' <h4>Color</h4>
        <div class="colors">';
        
        while ($row = mysqli_fetch_array($SIresult)) {
            
            ?>

        <a href="javascript:void(0)" class="s-colors" data-color="<?= $row['colors']; ?>" style="background-color: <?= $row['colors']; ?>;"></a>

<?php
        }
        echo ' </div>';
    } else {
        echo "";
    }
    

?>

在上面的代碼中,我做了一個,如果值為1則執行此操作,否則如果它more than 1則仍然執行此操作。

但我想要的是,當它在執行> 1循環時,我希望仍然能夠從中獲取一個值 - 特別是第一個將出現的值。

你怎么做呢?

如果您稍微整理一下代碼,則可以更輕松地完成此任務。 不要將數據庫邏輯與表示邏輯混合在一起,只需在開始輸出 HTML/JavaScript 之前獲取數據。 您可以將元素的數量存儲在變量中。

// Fetch the data and store it in an array
$stmt = $conn->prepare('SELECT * FROM productcolor where proId=?');
$stmt->bind_param('s', $pid);
$stmt->execute();
$data = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
$no_of_elements = count($data);

// If more than one element present in the results
if ($no_of_elements > 1) {
    echo $data[0]['colors'];
}

echo ' <h4>Color</h4>
<div class="colors">';
foreach ($data as $row) {
    echo <<<S_COLORS_BLOCK
    <a href="javascript:void(0)" class="s-colors" data-color="{$row['colors']}" style="background-color: {$row['colors']};"></a>
    S_COLORS_BLOCK;
}

// If only one element is present then display JavaScript
if ($no_of_elements === 1) {
    echo '
    <script>
        $(document).ready(function () {
            $(".pdt-color-cart").val('.json_encode($row['colors']).');
        })
    </script>';
}

如果我理解正確,您想“記住”彈出的第一個顏色是什么? 在這種情況下,您可以在第一個 if 之前設置一個變量,例如 $saveColor = TRUE。 然后在 elseif 中,檢查 $saveColor,如果為 TRUE,則將其更改為 FALSE 並設置第二個變量以保存顏色,例如

$firstColorFound = $rowed['colors'];

或類似的東西。

下次循環時, $saveColor 將不再為 TRUE,因此 $firstColorFound 不會被覆蓋。 希望有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM