如何获取 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 循环时,我希望仍然能够从中获取一个值 - 特别是第一个值出来吧
你是怎么做到的?
如果我没理解错的话,你想“记住”第一个弹出的颜色是什么?在那种情况下,您可以在第一个 if 之前设置一个变量,例如 $saveColor = TRUE。然后在 elseif 中,检查 $saveColor,如果 TRUE,将其更改为 FALSE 并设置第二个变量来保存颜色,如
$firstColorFound = $rowed['colors'];
或类似的东西。
下次循环时,$saveColor 将不再为 TRUE,因此 $firstColorFound 将不会被覆盖。希望对您有所帮助!
如果您稍微整理一下代码,可以更轻松地完成此任务。不要将数据库逻辑与表示逻辑混合,只需在开始输出 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>';
}
我有这段代码,可以使用 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 循环时,我希望仍然能够从中获取一个值 - 特别是第一个值出来吧
你是怎么做到的?
如果我没理解错的话,你想“记住”第一个弹出的颜色是什么?在那种情况下,您可以在第一个 if 之前设置一个变量,例如 $saveColor = TRUE。然后在 elseif 中,检查 $saveColor,如果 TRUE,将其更改为 FALSE 并设置第二个变量来保存颜色,如
$firstColorFound = $rowed['colors'];
或类似的东西。
下次循环时,$saveColor 将不再为 TRUE,因此 $firstColorFound 将不会被覆盖。希望对您有所帮助!
如果您稍微整理一下代码,可以更轻松地完成此任务。不要将数据库逻辑与表示逻辑混合,只需在开始输出 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>';
}