我有这个PHP代码:
function getusers($user) {
$result = query("SELECT IdUser, username FROM login WHERE username='%s'",$user);
if (count($result['result'])>0) {
//authorized
print json_encode($result);
} else {
errorJson('Actualization failed');
}
}
但这只会返回与名称完全匹配的用户。 我想返回包含该名称字符串的所有用户,例如:
dani - > daniel,dani_56,dani563,elnenedani,...
通常通过输入PHP:%dani%
来完成,但由于我已经将%s用于获取变量$ user,我不知道如何设置它。
有什么想法吗?
答案 0 :(得分:1)
这不是一个很好的问题。如果您在Stackoverflow中搜索得很好,那么你就可以得到答案。正如你问的问题,答案是......而不是等于使用LIKE:
function getusers($user) {
$result = query("SELECT IdUser, username FROM login WHERE username LIKE %'%s'%",$user);
if (count($result['result'])>0) {
//authorized
print json_encode($result);
} else {
errorJson('Actualization failed');
}
}
似乎PHP代码和数据库运行良好。查看以下链接以查找错误:
iOS 5 JSON Parsing Results in Cocoa Error 3840
Cocoa error 3840 using JSON (iOS)
答案 1 :(得分:0)
您应该使用LIKE语法。确保包含%
以指示通配符:
query('SELECT IdUser, username FROM login
WHERE username LIKE "%' . $user . '%"')
答案 2 :(得分:0)
我的query()函数是
function query() {
global $link;
$debug = false;
//get the sql query
$args = func_get_args();
$sql = array_shift($args);
//secure the input
for ($i=0;$i<count($args);$i++) {
$args[$i] = urldecode($args[$i]);
$args[$i] = mysqli_real_escape_string($link, $args[$i]);
}
//build the final query
$sql = vsprintf($sql, $args);
if ($debug) print $sql;
//execute and fetch the results
$result = mysqli_query($link, $sql);
if (mysqli_errno($link)==0 && $result) {
$rows = array();
if ($result!==true)
while ($d = mysqli_fetch_assoc($result)) {
array_push($rows,$d);
}
//return json
return array('result'=>$rows);
} else {
//error
return array('error'=>'Database error');
}
}
答案 3 :(得分:0)
我没有得到修复。此代码适用于使用AFNetworking的ios应用程序,可能会让您知道会发生什么,因为我没有得到它