2013-02-24 75 views
1

我在老「的mysql_query」的mysql_query到PDO

$query = mysql_query("SELECT defe FROM information WHERE term = 1"); 
$fetch = $db->fetch_array($query); 
print_r($fetch); 

我想這種轉變從數據庫中檢索信息的PDO方式下面的代碼。我嘗試以下(沒有工作 - 不顯示任何結果):

$query = $db->prepare('SELECT defe FROM information WHERE term = 1'); 
$fetch = $query->fetch(); 
print_r($fetch); 

連接到數據庫的成立以及存儲在$db變量(只PDO)。

+0

請別隻通過猜測切換,但你在做什麼讀了。 – PeeHaa 2013-02-24 16:45:34

+0

@PeeHaa我以爲prepare()是PDO中必需的東西。這就是爲什麼我沒有刪除它。 – shnisaka 2013-02-24 17:30:01

+2

這就是我正在談論的猜測;-) – PeeHaa 2013-02-24 17:31:39

回答

9

你必須execute查詢

$query = $db->prepare('SELECT defe FROM information WHERE term = 1'); 
$query->execute(); 
$fetch = $query->fetch(); 
print_r($fetch); 

,因爲你不使用你所查詢的任何參數

$query = $db->query('SELECT defe FROM information WHERE term = 1'); 
$fetch = $query->fetch(); 
print_r($fetch); 
+4

或使用'$ db-> query()'代替。 http://www.php.net/manual/en/pdo.query.php(我不主張使用未轉義的值,但他沒有在這裏使用任何變量) – mpen 2013-02-24 07:58:50

+0

@Mark和穆薩謝謝..我感謝您的幫助。 – shnisaka 2013-02-24 08:05:44

2

你可以簡單地做您還可以使用PDO::query

$query = $db->query('SELECT defe FROM information WHERE term = 1'); 
$result = $query->fetch(); 
print_r($result); 

但是,如果您想準備(可能出於安全原因),您需要執行它。

因此,這將是

$query = $db->prepare('SELECT defe FROM information WHERE term = 1'); 
$query->execute(); 
$result = $query->fetch(); 
print_r($result); 
+0

我是這個PDO的初學者..我不知道做什麼準備..我從其他地方複製了代碼並開始研究它:(這就是我如何學習大聲笑 – shnisaka 2013-02-24 08:01:39

+0

然後你最好學習準備... .http://php.net/manual/en/pdo.prepare.php ....因爲它們非常有用 – 2013-02-24 08:03:09

+1

@shnisaka:「prepare」本質上是將查詢發送給MySQL服務器,然後編譯它(準備好它執行「是實際導致它運行並獲取數據並將其返回給PHP腳本的原因。此外,你可以在你準備好的查詢中使用變量(使用'?'或':myvar'),然後你然後可以通過將一個[關聯]數組傳遞給'execute'方法來進行替換,因爲它是安全且快速的(特別是在多次運行同一查詢時),所以這是首選方法。 – mpen 2013-02-24 18:44:51