2013-07-09 57 views
-1

與正在貶值的MYSQL功能我一直想我的代碼遷移到PDO訂購MySQL的輸出,但也有一對夫婦的功能我已經習慣了與SQL,我不能在複製PDO。 這是我打印出來,其中包含從Twitter信息的表格代碼:如何使用PDO

<?php $date = date('H:i:s', time()); ?> 
<h3>Twitter Feed @ <?php echo "$date"; ?></h3> 

<?php 
/*** mysql hostname ***/ 
$hostname = 'localhost'; 

/*** mysql username ***/ 
$username = 'MySQL_USER'; 

/*** mysql password ***/ 
$password = 'SECRET'; 

try { 
    $dbh = new PDO("mysql:host=$hostname;dbname=DB_NAME", $username, $password); 
    /*** echo a message saying we have connected ***/ 
    echo 'Printing Tweets<br />'; 

    /*** The SQL SELECT statement ***/ 

$sql = "SELECT * FROM tweets"; 
foreach ($dbh->query($sql) as $row) 
     { 
     print $row['created_at'] .' <br /> '. $row['tweet_text'] .' <br /> '.  $row['screen_name'] . ' <br /> '. $row['name'] .' <br /> '. '<br /><br />'; 
    } 

/*** close the database connection ***/ 
$dbh = null; 
} 
catch(PDOException $e) 
    { 
    echo $e->getMessage(); 
    } 
?> 

三個問題:

此代碼將首先存儲第一Twitter消息,我如何訂購最後一條Tweet?

在MySQL中我會寫

$result = mysql_query("SELECT * FROM tweets ORDER BY created_at DESC");

表包含鏈接到用戶的圖片,我怎麼會打印出來作爲一個圖像,而不是文字?

同樣,在MySQL中我會寫:

echo "<img src='"; 
echo stripslashes($row[9]); 
echo "'>"; 

而不是必須記住密碼和用戶名我一直把在一個單獨的連接細節包括文件 - 如database_connection.php - 這受密碼保護。這在PDO中可能嗎?

在MySQL:

require_once 'includes/database_connection.php' ; 
+2

我覺得你用PHP –

+0

XSS報警混亂的MySQL:請輸出用戶數據到HTML時使用'htmlspecialchars'。你真的需要'stripslashes'嗎? –

+0

Mysql函數是PHP的一部分,並且將在以後的版本中被棄用 - http://php.net/manual/en/function.mysql-query.php - 所以我試圖在這種情況發生之前擺脫MySQL函數。 – Phil

回答

3

MySQL的語言並沒有改變,你是如何訪問數據庫。 ORDER BY語句仍然按原樣工作。通過改變這一行:

foreach ($dbh->query($sql) as $row) 

要這樣:

foreach ($dbh->query($sql,PDO::FETCH_ASSOC) as $row) 

您可以通過列名訪問每一列,像之前。

您的圖片鏈接只會在你如何訪問列更改:

echo stripslashes($row['image']); // Or whatever the column name is 

和連接的數據庫文件仍然將被罰款。

+0

謝謝,這很有道理。不知道爲什麼數據庫文件失敗,認爲它可能正在處理數據庫連接文件之前的twitter頁面,並因此停止,因爲它沒有連接。將再試一次。 – Phil