簡體   English   中英

mysqli查詢返回錯誤的值

[英]mysqli query returning wrong values

我正在創建一個函數,它返回連接到用戶ID的某個用戶的請求字段,我當前的代碼是這樣的:

<?php
    function getUserData($id = "current", $field = "username"){
        global $database;
        if($id == "current"){
            $id = $_SESSION['userID'];
        }
        $query = $database->prepare("SELECT :field FROM `users` WHERE `ID` = :ID LIMIT 1;");
        $query->bindParam(":ID",$id);
        $query->bindParam(":field",$field);
        $query->execute();
        while($row = $query->fetch(PDO::FETCH_BOTH)){
            print_r($row);
        }
        //return $username;
    }
?>

如果$id值保持為空,則查找當前登錄的ID,這可以正常工作。 對於$field如果該$field為空,則它只查找連接到ID的用戶名,問題出在$query->bindParam("field",$field); ..由於某種原因,這不起作用,並在使用此時print_r返回:

Array ( [username] => username [0] => username )

雖然完全相同的查詢工作時使用它像這樣:

$query = $database->prepare("SELECT $field FROM users WHERE ID = :ID LIMIT 1;");

我究竟做錯了什么?

您綁定了一個字段名稱,因此您的查詢將如下所示:

SELECT 'username' FROM `users` WHERE `ID` = 'X' LIMIT 1;

這不起作用,你不能綁定像這樣的字段名稱。 你必須直接將字段名稱作為php變量傳遞而不綁定它們。

看看這個: PHP PDO語句可以接受表或列名作為參數嗎?

它可能對你有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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