繁体   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