2013-05-25 10 views
-1

Sql小提箱爲您的方便here一個更好的方法來從MySql數據生成這個JSON數組與PHP

我正在從MySql表中獲取數據並將其轉換爲json數組。一切運作良好,我有我想要的方式輸出,但有沒有辦法可以改進(縮短/改進)?數組鍵必須保持不變,並且需要匹配dbs輸出。

我的代碼

$stmt = $conn->prepare("select name as name, age as age, address as address, pincode as pincode from json where name = 'peter'"); 
    $stmt->execute(); 

    while($row = $stmt->fetch()) { 
     #echo $row['name']." ".$row['age']." ".$row['address']." ".$row['pincode'].'<br>'; 
     $myarray['name'] = $row['name']; 
     $myarray['age'] = $row['age']; 
     $myarray['address'] = $row['address']; 
     $myarray['pincode'] = $row['pincode']; 
    } 

    echo json_encode($myarray); 

我的輸出(上述代碼成功地輸出該)

{"name":"Peter","age":"30","address":"1 Elm Street","pincode":"91550"} 
+0

名稱是唯一的嗎?爲什麼你做「名稱爲名稱」,因爲它不是必需的 – Haagenti

+0

名稱是唯一的。我將使用'where name ='myName'' – jmenezes

回答

2

取出所有的冗餘,使用適當的準備的語句(假設PDO)和添加錯誤處理(至少一個存根),你最終與此:

$stmt = $conn->prepare('SELECT name, age, address, pincode FROM json WHERE name = ?'); 
$stmt->execute(array('peter')); 

if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    echo json_encode($row); 
} else { 
    echo json_encode(array('status' => 'error')); 
} 

如果您預計多行:

echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); 
2

你只選擇所需的字段,那麼你可以做

echo json_encode($stmt->fetch(PDO::FETCH_ASSOC)); 

編輯:現在你提到的名字是獨一無二的,所以上面的是你需要。

+0

如果您只希望看到一行,您不應該'while'。 – deceze

+0

名稱不唯一是我的猜測。認爲這是最好的解決方案,加上你提出的更好的準備 – Haagenti

+0

'name ='peter''可能不是唯一的,這就是爲什麼我保持'while'。如果'name'是唯一的,你當然是對的。 – MaX

0
$row = $stmt->fetch(PDO::FETCH_ASSOC); 
echo json_encode($row); 

如果結果中只有一行,則不需要while循環。

相關問題