我正在使用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);
}
为什么我会收到所有用户的结果,而不是某个特定用户?
答案 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。'”;';