2014-04-28 78 views
-4

我想在PHP中顯示一列。 對於PDO,我用這個代碼:如何在PHP中使用PDO顯示MySQL列值?

$db1 = new PDO ('mysql:host=localhost;dbname=db;charset=utf8', 'root', ''); 
$db1->setAttribute (PDO::ATTR_ORACLE_NULLS, PDO::NULL_TO_STRING); 

而這個代碼不工作:

$qry = $db1->prepare ("SELECT user_data WHERE user_id = $userid"); 
$row = mysql_fetch_array($sql); 
echo $row['user_name']; 

如何?

謝謝!

編輯:

我的代碼:

$db1 = new PDO ('mysql:host=localhost;dbname=db;charset=utf8', 'root', ''); 
$db1->setAttribute (PDO::ATTR_ORACLE_NULLS, PDO::NULL_TO_STRING); 
$qry = $db1->prepare('SELECT user_name FROM user_data WHERE user_id = :id LIMIT 1'); 
$qry -> execute(array(':id' => $userid)); 
$row = $sth -> fetch(); 
echo $qry -> user_name; 

而且它沒有

不Eching的,我想通過$用戶ID查找,並呼應USER_NAME列(如USER_ID = 1和它回聲名稱)

+0

那是因爲PDO可以作爲一份準備好的聲明.. HTTP://be2.php .net/pdo.prepared-statements – Naruto

回答

0

mysql_fetch_array不是爲了pdo,而是爲了原始的mysql函數集。您需要使用OO PDO

fetchColumn下列()將返回剛剛列,您可以在一個循環中使用,以獲得整列 取()將返回一個整行

此外,正如另一個答案所指出的,你的SQL查詢從一開始就是錯誤的。它不包含表名。

你也從來沒有在聲明中調用execute()。我強烈建議你通過所有的documentation上PDO的閱讀

-1

請在SELECT查詢中使用表名和準備功能

$qry = $db1 -> prepare("SELECT user_data FROM TABLENAME WHERE user_id = :id"); 
$qry -> execute(array(':id' => $userid)); 
$row = $qry -> fetch(); 
echo $row -> user_name; 
+0

雖然這是真的,但這並不回答PDO問題 – Zarathuztra

+0

@Zarathuztra是的,但查詢是錯誤的我的朋友..如果你很樂意減少我的觀點,然後做你想要的 –

+0

@SeanWM請參閱全部代碼man ....您不使用表名OK ...所以您的查詢是錯誤的。 –