2013-02-05 55 views
0

此代碼打印出來的列名的列表。但我希望它打印出存儲在UserName表與JSMITH的LoginName用戶的信息。得到MSSQL結果準備好的語句

$loginname = "JSmith"; 
$stmt = $dbh->prepare("SELECT * FROM UserName WHERE LoginName=:login_name"); 
$stmt->bindValue(":login_name", $login_name, PDO::PARAM_STR); 
$stmt->execute(); 

echo "<table><tr>"; 
$result = $stmt->fetch(PDO::FETCH_ASSOC); 
print_r($result); 
foreach ($result as $key => $val){ 
    echo "<th>" . $key . "</th>"; 
} 
echo "</tr>"; 
echo "</table>"; 

爲什麼沒有這個返回與用戶名的行?看着echo gettype($result)顯示我,他們是字符串和整數;不像每一塊返回數組本身就是一個數組。我確信這是一件簡單的事情,但任何幫助表示讚賞。謝謝!

回答

1

要打印的鑰匙,而不是值。鍵是列名稱,值是相應的列值。

print_r($result)顯示$stmt->fetch()返回一個包含您所期望的信息的數組,並且相應的HTML根本不會反映該數組。

http://php.net/manual/en/pdostatement.fetch.php#example-1018

讓我們來解決它。

$result = $stmt->fetch(PDO::FETCH_ASSOC); 
print_r($result); 
foreach ($result as $key => $val){ 
    echo "<th>" . $key . "</th>"; 
    echo "<td>" . $val . "</td>"; 
} 
echo "</tr>"; 
echo "</table>"; 
+0

是的,這是事實。不過,有些東西仍然不對。因爲當我打印'$ val'時,我從第一行記錄中獲得值。不是用戶JSmith的記錄。這就是爲什麼我認爲循環有問題。但它必須與查詢。有什麼方法可以打印出我準備好的查詢,以便查看它的語法是否已被正確解釋? – 1252748

+0

查詢對我來說很好。您可以運行在你的數據庫外殼,看看有什麼實際上是在有類似的查詢:'SELECT * FROM用戶名其中的LoginName =「JSmith''。 –

+0

這篇文章http://stackoverflow.com/a/2243512/1252748建議'回聲$ stmt-> queryString'地看到,實際上進行的查詢。但它顯示我'SELECT * FROM UserName WHERE LoginName =:login_name'。儘管我已將它放在bindValue()行之後。我是否應該期望看到它,或者我應該期望看到JSmith的界限值? – 1252748