![](/img/trans.png)
[英]How do I grab all rows from a single column from multiple tables, based on user input?
[英]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.