2014-10-06 30 views
-1

我對PDO非常陌生,我試圖解碼我的表「test」中包含特殊實體的所有行,例如「('L & eacute; on:The Professional')」而不是「萊昂:專業人士」。php解碼mysql中的特殊實體

所以,這裏是我的嘗試:

<?php 
require_once('connection.php'); 

$stmt = $conn->prepare("SELECT * from test"); 
$stmt->execute(); 
while ($results = $stmt->fetch()){ 

$b = html_entity_decode($stmt); 
echo $b; 
} 

但我沒有輸出打印..

可能有人好心幫我解決這個問題?

+3

正如您所見,'$ query'尚未定義。所以它沒有「執行」功能。也許你應該嘗試在'$ conn'或'$ stmt'上調用它。 – Pataar 2014-10-06 15:38:09

回答

1
  • prepare()(你的情況$stmt)返回一個語句對象
  • fetch()返回關聯數組,其中指數將是列名

$sql = "SELECT column1, column2, column3 from test"; 
$stmt = $conn->prepare($sql); 
$stmt->execute(); 
$result = array() 
while ($row = $stmt->fetch()){ 
    $resutlt[] = array('column1' => html_entity_decode($row['column1']), 
         'column2' => html_entity_decode($row['column2']), 
         'column3' => html_entity_decode($row['column3']) 
       ); 
} 
var_dump($result); 
return $result; 


編輯:更換值爲

//prepare select 
$sql = "SELECT id, column1, column2, column3 from test"; 
$stmt = $conn->prepare($sql); 
$stmt->execute(); 

//prepare update 
$update_sql = "UPDATE test SET column1=?,column2=?,column3=? WHERE id = ?;"; 
$update_stmt = $conn->prepare($update_sql); 

while ($row = $stmt->fetch()){ 
//update 
$update_stmt->execute(array(html_entity_decode($row['column1']), 
          html_entity_decode($row['column2']), 
          html_entity_decode($row['column3']), 
          $row['id'] 
       ); 
} 
+0

感謝您的完整解釋。所以,$ results返回一個包含我在提取中指定的列的數組?我應該寫while($ results = $ stmt-> fetch(columnName))?對不起,如果我的問題真的是初學者:( – mOna 2014-10-06 15:54:30

+0

@mOna看到我的編輯 – meda 2014-10-06 15:57:33

+0

非常感謝!它的工作原理非常完美,只是還有一個問題:如果我想用解碼器更新我的數據庫中的所有行,是否可以如果我把var_dump($ result)行放在while循環中,然後把轉儲數據插入到一個新表中,或者最好用$ result [columnName]更新表? – mOna 2014-10-06 16:11:33

1

您沒有定義$query,因此它沒有​​函數。如果您希望執行準備好的聲明,您應該致電$stmt->execute()

+0

謝謝,是的,你是對的所以我編輯我的問題,但我仍然沒有輸出打印..(雖然前面的錯誤已解決) – mOna 2014-10-06 15:43:21