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