我正在尝试进行一些文本格式化并在一大块代码中查询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>
当它回显列表中的变量时,我可以告诉查询仍然正常执行,因为我得到了适当数量的选项,但它们都显示为“数组”。
我在哪里错了?
答案 0 :(得分:1)
你的下面一行:
$labelCPU = explode(':',str_replace('_',' ',$row['itemName']));
将其更改为数组。 Explode基本上采用一个字符串并将其转换为一个数组,用你指定的字符分割它(在这种情况下&#39;:&#39;)。
您需要执行以下操作:
for ($i=0; $i<count($labelCPU); $i++) {
$aa .= "<option value='{$row['partID']}'>$labelCPU[$i]</option>";
}
我怀疑你在&#34;之后使用explode获取类别名称:&#34;。所以也许这会更好:
$aa .= "<option value='{$row['partID']}'>$labelCPU[1]</option>";
答案 1 :(得分:0)
php function explode
返回一个数组
将
var_dump($labelCPU);
爆炸声明后。它将转储$labelCPU
中存储的所有数据。然后找到包含所需数据的元素
答案 2 :(得分: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>
祝你好运!