簡體   English   中英

使用PHP PDO顯示mysql select語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM