0

AFNetworkingを使用してアプリで検索機能を作成しようとしていますが、穴の名前を入力しない限り何も見つかりません...

私の Web サービスでの私の機能。

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);

「test」の場合、「LIKE 'test%'」として機能し$nameます。

query()関数は次のように動作するprintf()ため、'%'は としてエンコードされ'%%'、文字列引数は を使用して渡され'%s'ます。

于 2012-10-01T18:23:12.813 に答える
0

それがコードのコピー/貼り付けである場合、SQL ステートメントの % の後に終了引用符がありません。

于 2012-10-01T17:43:08.043 に答える