0

我试图在我的应用程序中创建一个搜索功能,使用 AFNetworking 但是当它找不到任何东西时,除非我输入孔名称......

我在我的网络服务中的功能;

function streamSearch($name) {

    $result = query("SELECT name, email, IdPhoto  FROM users WHERE name LIKE '%", $name);


if (!$result['error']) {
    print json_encode($result);
} else {
    errorJson('search is broken');
}
}

在我的 ios 我这样做:

[[API sharedInstance] commandWithParams:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"streamSearch", @"command",theSearchBar.text, @"name", nil] onCompletion:^(NSDictionary *json) {
            //got stream
            NSDictionary *user = [json objectForKey:@"result"];

你能帮我吗,我需要它来找到所有有我输入的字母的用户....

后台查询:

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');
}
}
4

2 回答 2

1

代码可能应该如下所示:

$result = query("SELECT name, email, IdPhoto  FROM users WHERE name LIKE '%s%%'", $name);

如果是“测试”,则充当“LIKE 'test%'” $name

query()函数的行为就像应该将printf()a编码为,并使用 传递字符串参数。'%''%%''%s'

于 2012-10-01T18:23:12.813 回答
0

如果这是您的代码的复制/粘贴,那么您在 SQL 语句中的 % 之后缺少一个结束引号。

于 2012-10-01T17:43:08.043 回答