2013-04-08 64 views
-2

我試圖做一個小文本格式和查詢SQL在一個代碼塊。此前,它在做上市就好了,不進行格式化,但我需要用空格來代替下劃線,並刪除每個字符串爲用戶提高可讀性之前的類別。PHP保持顯示「數組」,而不是[字符串]

<?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> 

當迴響在列表中的變量,我可以告訴查詢仍在執行很好,因爲我得到的選項中選擇合適的數字,但它們都顯示爲「陣列」。

我在哪裏錯了?

+2

'爆炸()'返回一個數組,其中分配給'$ labelCPU'。你打算怎麼做? – 2013-04-08 15:40:54

+0

因爲'explode()'會返回數組。使用'$ labelCPU [0]'和'$ labelCPU [1]'等等 – 2013-04-08 15:43:49

回答

1

你下面一行:

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

正在改變它到一個數組。爆炸基本上需要一個字符串並將其轉換爲一個數組,將其按照您指定的字符分割(在本例中爲':')。

你需要做的是這樣的:

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

我懷疑你使用的爆炸拿到之後類別名稱「:」。所以也許這會更好:

$aa .= "<option value='{$row['partID']}'>$labelCPU[1]</option>"; 
+0

這是判決,謝謝 – mikedugan 2013-04-08 15:47:41

0

php函數explode返回一個數組。
廣場爆炸聲明
var_dump($labelCPU);
後。它會轉儲存儲在$labelCPU中的所有數據。然後找到包含您想要的數據的元素

0

如果您不使用數字鍵,則切換爲mysql_fetch_assoc,您也只是缺少一個關於您爆炸的索引(我添加了一條評論)。

請注意,mysql_fetch_assoc /數組不贊成使用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> 

祝你好運!

相關問題