while {} 之外的 Mysql 查询结果输出

标签 mysql arrays while-loop

我无法让我的 sql 查询结果在 while 循环之外完全工作。

我有这样的查询:

$result_artikel = mysql_query("SELECT DISTINCT oxtitle, FROM oxarticles a
INNER JOIN oxobject2category b ON a.oxid = b.oxobjectid
WHERE b.oxcatnid IN (SELECT oxcatnid FROM oxobject2category WHERE oxobjectid = '$term')ORDER BY oxtitle ASC")
or die(mysql_error());  ;

这会返回一些名称 (oxtitle)。例如5:

汽车, 手机, 椅子, table , 喝

在下一步中,我将这个查询结果放入一个数组中,并在 while 循环中输出它们

$Daten_artikel = array(
    'name' => '',
    'oxsort' => '',
    'bild' => ''
);

while($row = mysql_fetch_array($result_artikel))
{
    $Daten_artikel['name'] = $row['oxtitle'];
    $Daten_artikel['oxsort'] = $row['oxsort'];
    $Daten_artikel['bild'] = $row['oxpic1'];

    echo '<br>' . "Name: ".$Daten_artikel['name'];
}

之所以将结果放在数组中,是因为可以在while循环外输出。到目前为止,这是有效的,但是当我在 while 循环之外输出结果时,我在数组中只有一个名称 (oxtitle)。这是我无法解决的问题。

我需要 while 循环之外的结果,因为我稍后在页面中有一个 html 表,必须由 IF 语句填充。

例子:

<table>
<tr>
<td>
<?php
if ($Daten_artikel['name'] == smartphone )
    {
    echo $Daten_artikel['name'];
    }
?>
</td>
</tr>

<tr>
<td>
<?php
if ($Daten_artikel['name'] == chair)
    {
    echo $Daten_artikel['name'];
    }
?>
</td>
<tr>
</table>

这只是一个例子。但这行不通,因为数组中只有一个名称 (oxtitle),例如“汽车”。所以 if 语句不能工作。它仅适用于:if array == car。

一个解决方案可以是将我所有带有 if 循环的表格 html 代码放在 while 循环中。但这意味着我必须始终在带有 echo '' 等的 wile 循环内工作。这不是很好。我希望有另一个灵魂,我可以用“我的”方式工作。意味着该数组甚至包含 while 循环之外的所有名称 (oxtitles),因此我可以使用 if 语句。

抱歉我的英语不好。 你好。

最佳答案

为什么不用这个

   $row = mysql_fetch_array($result_artikel) ;

  $Daten_artikel['name'] = $row['oxtitle'];
  $Daten_artikel['oxsort'] = $row['oxsort'];
  $Daten_artikel['bild'] = $row['oxpic1'];

 // echo '<br>' . "Name: ".$Daten_artikel['name'];

而不是 while 循环。然后您就可以使用这些变量了。

编辑:

 <?php
   echo "<table>";
   while($row = mysql_fetch_array($result_artikel))
{
$Daten_artikel['name'] = $row['oxtitle'];
$Daten_artikel['oxsort'] = $row['oxsort'];
$Daten_artikel['bild'] = $row['oxpic1'];

//echo '<br>' . "Name: ".$Daten_artikel['name'];
?>
<tr>
<td>
<?php
if ($Daten_artikel['name'] == "smartphone" )
{
echo $Daten_artikel['name'];
}
if ($Daten_artikel['name'] == "chair")
{
echo $Daten_artikel['name'];
}
else {echo "there is nothing";} 
?>
</td>
</tr>

<?php
}
echo "</table>";
?>

编辑2; 我不确定我理解你的意思,但是这个解决方案,

将您的订单更改为:

   ORDER BY case when oxtitle = 'Schwarz' then 1
                 when oxtitle = 'Cyan'    then 2
                 when oxtitle = 'Magenta'    then 3
                 when oxtitle = 'Gelb'    then 4 end 

然后试试这段代码:

    echo "<table>";
   while($row = mysql_fetch_array($result_artikel))
 {
  $Daten_artikel['name'] = $row['oxtitle'];
  $Daten_artikel['oxsort'] = $row['oxsort'];
  $Daten_artikel['bild'] = $row['oxpic1'];

  // echo '<br>' . "Name: ".$Daten_artikel['name'];
 ?>
  <tr>
  <td>xzy</td>
   <td>
     <?php
   echo $Daten_artikel['name'] ;

   ?>
   </td>
  </tr>

 <?php
   }
  echo "</table>";
  ?>

EDIT3.

  ORDER BY case when oxtitle like '%Schwarz%' then 1
             when oxtitle LIKE '%Cyan%'    then 2
             when oxtitle LIKE '%Magenta%'    then 3
             when oxtitle LIKE '%Gelb%'    then 4 end 

编辑 4: 由于您的需要 用这个

     case when oxtitle like '%Schwarz%' and (oxsort = 13 or oxsort = 3 ) then 1
     .....

关于while {} 之外的 Mysql 查询结果输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17899304/

相关文章:

javascript - 将 javascript 对象与具有相同键的内部数组结合起来(类似于外键)

java - 迭代存储为无序数组的二叉搜索树(BST)的最快方法?

c++ - 为什么选择 for (;;){} 而不是 while(1)?

php - 在 while 循环(作用域)之外使用变量

mysql - MSSQL 到 MYSQL 迁移 : Collation equivalent for SQL_LATIN1_GENERAL_CPI_CI_AS

php - 使用 MySQL 和 PHP 对 2 个表的结果进行分组

php - 在 Yii 的数据库中获取下一个和上一个 id 记录

C#迭代一个不断增长的多维数组

php - 如何使用str_split()?

php - 搜索公里内用户不起作用