0

私はこの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');
    }
}

ただし、これは名前と完全に一致するユーザーのみを返します。その名前の文字列を含むすべてのユーザーを返したいと思います。次に例を示します。

ダニ -> ダニエル、ダニ_56、ダニ563、エルネダニ、...

これは通常、PHP を入れることによって行われます:%dani%しかし、変数 $user を取得するために %s を入れたので、その入れ方がわかりません。

何か案が?

4

4 に答える 4

1

それは素晴らしい質問ではありません。Stackoverflowでよく検索した場合は、答えに行きます..質問をしたように、答えは.. Equalの代わりに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 コードと DB はうまく機能しているようです。エラーについては、以下のリンクを確認してください。

iOS 5 JSON 解析で Cocoa エラー 3840 が発生する

JSON を使用した Cocoa エラー 3840 (iOS)

操作を完了できませんでした。(ココア エラー: 3840)

Cocoa エラー 3840 - NSJSONSerialization

于 2013-07-29T14:43:34.630 に答える
0

LIKE 構文を使用する必要があります。%ワイルドカードを示すために必ず以下を含めてください。

query('SELECT IdUser, username FROM login 
       WHERE username LIKE "%' . $user . '%"')
于 2013-07-29T14:45:56.970 に答える
0

直りません。このコードは、AFNetworking を使用する ios アプリ用です。

于 2013-07-30T01:28:25.747 に答える
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');
}

}

于 2013-07-29T16:14:25.987 に答える