簡體   English   中英

如何從單個列的所有行中獲取數據?

[英]How do I get data from all rows in a single column?

我是php新手,很難弄清似乎很簡單的東西。 我在這里的主要目標是獲取在“數字”列中找到的所有數字,然后列出數字01-20,只要它們不顯示在數據庫中即可。

這是我到目前為止的內容:

$select = mysqli_query($connect, "SELECT * FROM `memfav`");
while($row=mysqli_fetch_assoc($select)) {
    $number = $row['number'];
}
for($i=1; $i<=20; $i++) {
    if($i<>$number) {
        if($i<10) {
            echo "<option value=\"$i\">0$i</option>";   
        }
        else{
            echo "<option value=\"$i\">$i</option>";
        }

    }
}

但是,它僅不顯示最新條目。 我完全錯過了什么嗎?

ETA:對於任何正在尋找類似東西的人,我終於找到了實現此目標的方法! (在其他人的幫助下)

$select = mysqli_query($connect, "SELECT `number` FROM `memfav`");
while( $row = mysqli_fetch_assoc($select) ) {
$numbers[] = $row['number'];
}
for($i=1; $i<=20; $i++) {
if( !in_array($i, $numbers) ) {
    echo '<option value="$i">' . str_pad($i, 2, '0', STR_PAD_LEFT) . '</option>';
}
}

您已經將比較邏輯放在了while循環之外; 按照編寫的方式,您的代碼將遍歷mysql結果,並將$number設置為每一行的新值。 此循環完成,使$number等於返回的最后一行的值。 然后,它對照值1-20檢查$number的最終值。 要解決此問題,請將比較邏輯放在while循環內。

嘗試這個:

$numbers = array();
for ($i = 1; $i <= 20; $i++) {
    if ($i < 10) {
        $numbers[] = "0{$i}";
    } else {
        $numbers[] = "{$i}";
    }
}

$select = mysqli_query($connect, "SELECT * FROM memfav");
$usedNumbers = array();
while ($row = mysqli_fetch_assoc($select)) {
    $usedNumbers[] = $row['number'];
}

$diff = array_diff($numbers, $usedNumbers);

foreach ($diff  as $key => $value) {
     echo "<option value=\"{$value}\">{$value}</option>";   
}
$select = mysqli_query($connect, "SELECT * FROM `memfav`");
while($row=mysqli_fetch_assoc($select)) {
    $number = $row['number'];
    for($i=1; $i<=20; $i++) {
      if($i<>$number) {
        if($i<10) {
            echo "<option value=\"$i\">0$i</option>";   
        }
        else{
            echo "<option value=\"$i\">$i</option>";
        }

      }
    }
}

暫無
暫無

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

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