-2

我正在尝试做一些文本格式并在一大块代码中查询 SQL。以前,它在没有格式化的情况下很好地列出了列表,但是为了用户可读性,我需要用空格替换下划线并删除每个字符串之前的类别。

<?php
 //doing the query
    $query = "SELECT * FROM parts WHERE itemName LIKE 'Processors:%'";
    $result = mysql_query($query) or die("Unable to query parts table!");
    while($row=mysql_fetch_array($result)) {
 //explode removes the preceding category, str_replace obviously replaces the _
        $labelCPU = explode(':',str_replace('_',' ',$row['itemName']));
 //displays the option in HTML
        $aa .= "<option value='{$row['partID']}'>$labelCPU</option>";
        }
?>
<select name="cpu"><? echo $aa; ?></select>

当它回显列表中的变量时,我可以告诉查询仍然执行良好,因为我获得了适当数量的选项,但它们都显示为“数组”。

我在哪里错了?

4

3 回答 3

1

您在下面的行:

$labelCPU = explode(':',str_replace('_',' ',$row['itemName']));

正在将其更改为数组。Explode 基本上接受一个字符串并将其转换为一个数组,按您指定的字符(在本例中为“:”)将其拆分。

您需要执行以下操作:

for ($i=0; $i<count($labelCPU); $i++) {
    $aa .= "<option value='{$row['partID']}'>$labelCPU[$i]</option>";
}

我怀疑您正在使用爆炸来获取“:”之后的类别名称。所以也许这会更好:

    $aa .= "<option value='{$row['partID']}'>$labelCPU[1]</option>";
于 2013-04-08T15:42:09.063 回答
0

php 函数explode返回一个数组。
放置
var_dump($labelCPU);
在爆炸声明之后。它将转储存储在$labelCPU. 然后找到包含所需数据的元素

于 2013-04-08T15:43:46.537 回答
0

如果您不使用数字键,请切换到 mysql_fetch_assoc,您也只是缺少关于您爆炸的索引(我添加了评论)。

请注意,不推荐使用 mysql_fetch_assoc/array 以支持 PDO。如果长寿是一个问题,可能要考虑换掉。

<?php

$query  = "SELECT * FROM parts WHERE itemName LIKE 'Processors:%'";
$result = mysql_query($query) or die("Unable to query parts table!");
$aa     = "";

while($row = mysql_fetch_assoc( $result ) ) 
{
    $labelCPU = explode(':',str_replace('_',' ',$row['itemName']));
    $labelCPU = $labelCPU[1]; // this is what you're missing
    $aa .= "<option value='{$row['partID']}'>$labelCPU</option>";
}
?>
<select name="cpu"><? echo $aa; ?></select>

祝你好运!

于 2013-04-08T15:45:22.940 回答