mysql查询没有获取用户数据

时间:2014-01-12 16:56:41

标签: php mysql

我正在使用apigee控制台使用以下URI测试我的Web服务。当我选择所有用户时,查询返回数据(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 is):

{"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);
}

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

4 个答案:

答案 0 :(得分:1)

在方法声明中,您有参数$users_username但在方法实现中使用$username,这是您的主要错误:变量$username不存在,因此它是{{ 1}};取代

null

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

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

答案 1 :(得分:1)

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

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

将其替换为:

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

看起来您在SQL命令中使用了错误的变量。该函数定义为

  

function users_get($ users_username){

其中输入变量是$ users_username

但在你的SQL命令中

  

$ sql ='SELECT * FROM users WHERE username =“'。$ username。'”;';

你使用$ username

按如下所示更改SQL命令,它应该没问题

  

$ sql ='SELECT * FROM users WHERE username =“'。$ users_username。'”;';