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