2017-03-19 57 views
1

我想簡單地通過PHP收穫一個sql結果集,而沒有添加鍵=>值對,我非常喜歡。 > _ <PHP:簡化的sql結果集,沒有垃圾

下面的代碼能夠從鍵值對中獲取值,但連續給它兩次。

 $dbh = new PDO('mysql:host=localhost;dbname=???', $user, $pass); 
     $sql = "SELECT * FROM products"; 
     foreach ($dbh->query($sql) as $results) 
     { 
      foreach($results as $key => $value){ 
       echo $value.';'; 
      } 
     } 

結果:「what; what; im; im; looking; looking; for; for;」。

我知道我錯過了一些非常基本的東西,如果可以清除它,它會很有價值......我已經試過修改這個時間再次,這是最接近真正想要的輸出。

想要的結果:「what; im; looking; for;」。

+1

用$結果= $ dbh->查詢($ SQL) – altoids

+2

這聽起來像'PDO取代第一的foreach:查詢()'返回'都PDO :: FETCH_ASSOC'和'PDO :: FETCH_NUM'。所以嘗試添加它作爲第二參數 - >'$ dbh-> query($ sql,PDO :: FETCH_ASSOC)' – Sean

+0

您是對的,肖恩!謝謝!這一直使我瘋狂,哈哈。 – thecomissar

回答

1

PDO最有可能返回列名和序號位置作爲地圖中的$key。您可以通過檢查它們是否鍵is_numeric來過濾輸出,並僅返回對應於序號值的值。

$dbh = new PDO('mysql:host=localhost;dbname=???', $user, $pass); 
$sql = "SELECT * FROM products"; 
foreach ($dbh->query($sql, PDO::FETCH_ASSOC) as $results) 
{ 
    foreach($results as $key => $value){ 
     echo $value.';'; 
    } 
} 
+1

謝謝,這也適用! – thecomissar

1

爲求:

$dbh = new PDO('mysql:host=localhost;dbname=???', $user, $pass); 
$sql = "SELECT * FROM products"; 
foreach ($dbh->query($sql) as $results) 
{ 
    foreach($results as $key => $value){ 
     if (is_numeric($key)) { 
      echo $value.';'; 
     } 
    } 
} 

由於@Sean提到,您可以通過專門傳遞一個適當的值到query函數調用的第二個參數返回列名(或序號位置)其他開發人員和我自己我想將代碼最終確定爲可讀性,以便其他人更容易學習或操縱。感謝幫助!

$dsn='mysql:host=localhost;dbname=YOUR_DATABASE'; 
$user='USER_NAME'; 
$pass='PASSWORD'; 

$dbh = new PDO($dsn, $user, $pass); 

foreach ($dbh->query("SELECT * FROM YOUR_TABLE", PDO::FETCH_ASSOC) as $results){ 
    foreach($results as $key => $value){ 
     echo $value; 
    } 
}