[英]displaying mysql select statement using PHP PDO
來自新手的問題:-)
我試圖將我的MySQL查詢語法轉換為PDO,但開始時遇到一些問題。
我的頁面中包含一個名為dbc.php的文件。 包含代碼:
define ("DB_HOST", "localhost"); // set database host
define ("DB_USER", "dbuser"); // set database user
define ("DB_PASS","dbpass"); // set database password
define ("DB_NAME","dbname"); // set database name
$link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection.");
$db = mysql_select_db(DB_NAME, $link) or die("Couldn't select database");
然后,我的頁面代碼是:
<?php
include 'dbc.php';
page_protect();
function get_users($db) {
$getusers = $db->query('SELECT employeeid, fullname FROM Persons order by fullname asc');
}
?>
我想用以下代碼顯示表輸出:
<table>
<tr>
<th> Full Name</th>
</tr>
<?
while($row = $getusers->fetch(PDO::FETCH_ASSOC))
{
?>
<tr>
<td>
<?
echo $row['fullname'];
?>
</td>
</tr>
<?
}
?>
</table>
當前輸出錯誤:
Fatal error: Call to a member function fetch() on a non-object in /home/she/public_html/versionfour/people.php on line 170
第170行是我的'while($ row = $ getusers-> fetch(PDO :: FETCH_ASSOC))'語句。
我知道我在這里缺少一些簡單的東西,可能是因為尚未完全了解PDO。
希望得到任何幫助。
感謝和問候,R
您的頁面代碼將$db
當作是PDO對象,而不是。 您的設置必須包含一行,例如$db = new PDO('CONNECTION STRING HERE');
(請參見文檔以找出數據庫類型的連接字符串;您不會提及這是mysql,mssql還是其他名稱),而不是mysql_connect
調用。
您遇到的此問題與“ $ getUsers”變量的范圍有關。 因為該函數未返回其值,所以HTML文件無法訪問該值,並且fetch()方法正試圖在未定義的值上調用,因此該錯誤內的“非對象”部分。
<?php
/** Include the db file which should define a connection as so
$db = new PDO('dblib:host=$hostname;dbname=$dbName', $user, $pass); etc
**/
include 'dbc.php';
page_protect();
function get_users($db)
{
$result = $db->query("SELECT employeeid, fullname FROM Persons order by fullname asc");
return $result;
}
$users = get_users($db);
/** $users->fetch() can now be used **/
?>
您還應該考慮進行一些錯誤檢查,以確保返回的數據庫結果實際上是PDO結果,否則您仍然可能會遇到此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.