【问题标题】:mysql query not getting the user datamysql查询未获取用户数据
【发布时间】:2014-01-12 16:56:40
【问题描述】:

我正在使用 apigee 控制台使用以下 URI 测试我的网络服务。当我选择所有用户时,查询返回数据(http://creative.coventry.ac.uk/~4089797/Games/V1.0/index.php/users/all):

[
{"id":"1","username":"fkhan","password":"XXXXXXXX","email":"fkhan@fkhan.com","Gender":null,"country":null,"activated":"0"},

{"id":"2","username":"bkhan","password":"XXXXXXXX","email":"bkhan@fkhan.com","Gender":null,"country":null,"activated":"0"},

{"id":"3","username":"ckhan","password":"XXXXXXXX","email":"ckhan@fkhan.com","Gender":null,"country":null,"activated":"0"}
]

但是当我选择特定用户时,查询不会返回任何数据(creative.coventry.ac.uk/~4089797/Games/V1.0/index.php/users/username/fkhan 是):

{"status":false,"error":"Unknown method."}

我在 MySQL 数据库中有一个名为 user 的用户,这是用于检索名称的 PHP:

 function users_get($users_username) {
    $this->load->database();
    $sql = 'SELECT * FROM users WHERE username = "'.$username.'";';
    $query = $this->db->query($sql);
    $data = $query->row();
    $this->response($data, 200);
}

这是查询函数:

function all_get() {
    $this->load->database();
    $sql = 'SELECT * FROM users;';
    $query = $this->db->query($sql);
    $data = $query->result();   
    $this->response($data, 200);
}

为什么我会得到所有用户的结果,而不是某个特定用户?

【问题讨论】:

  • 查找变量范围和函数参数

标签: php mysql


【解决方案1】:

在方法声明中你有参数$users_username,但在方法实现中你使用$username,这是你的主要错误:变量$username不存在所以它是null;替换

$sql = 'SELECT * FROM users WHERE username = "'.$username.'";';

$sql = 'SELECT * FROM users WHERE username = "'.$users_username.'";';

另外,考虑使用准备好的语句而不是手动将变量放入查询字符串中。

【讨论】:

    【解决方案2】:

    username 变量未在函数中定义,因此为空。 我相信你已经混淆了它的名字并打算使用$users_username

        $sql = 'SELECT * FROM users WHERE username = "'.$username.'";';
    

    替换为:

    $sql = 'SELECT * FROM users WHERE username = "'.$users_username.'";';
    

    【讨论】:

      【解决方案3】:

      您的变量名为$users_username,但查询使用变量$username,因此您的最终查询是SELECT * FROM users WHERE username = "";,并且没有空字符串的用户。 :)

      【讨论】:

        【解决方案4】:

        您似乎在 SQL 命令中使用了错误的变量。函数定义为

        函数 users_get($users_username) {

        输入变量是 $users_username

        但是在你的 SQL 命令中

        $sql = 'SELECT * FROM users WHERE username = "'.$username.'";';

        你使用 $username

        如下修改你的 SQL 命令应该没问题

        $sql = 'SELECT * FROM users WHERE username = "'.$users_username.'";';

        【讨论】:

        • 我改变了它,但我仍然遇到同样的问题 function users_get($users_username) { $this->load->database(); $sql = 'SELECT * FROM users WHERE username = "'.$users_username.'";'; $query = $this->db->query($sql); $data = $query->row(); $this->response($data, 200); }
        • 感谢您接受回复。通过接受答案,我假设您的问题现在已经解决。你整理了吗?还是你还有问题?
        • 是的,我现在已经将这个问题归类为许多其他问题:D
        猜你喜欢
        • 1970-01-01
        • 2015-10-21
        • 1970-01-01
        • 1970-01-01
        • 2018-04-17
        • 2020-11-28
        • 1970-01-01
        • 2021-09-25
        • 2017-04-25
        相关资源
        最近更新 更多