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

但这只会返回与名称完全匹配的用户。我想返回包含该名称字符串的所有用户,例如:

dani -> 丹尼尔, dani_56, dani563, elnenedani, ...

它通常是通过放入 PHP 来完成的:%dani%但是由于我已经放入了 %s 来获取变量 $user,所以我不知道如何放入它。

任何想法?

4

4 回答 4

1

这不是一个很好的问题。如果您在 Stackoverflow 中搜索得很好,那么您将得到答案。当您问问题时,答案是.. 而不是 Equal use 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 解析导致 Cocoa 错误 3840

使用 JSON (iOS) 的 Cocoa 错误 3840

操作无法完成。(可可错误:3840。)

可可错误 3840 - NSJSONSerialization

于 2013-07-29T14:43:34.630 回答
0

我没有得到解决。此代码适用于使用 AFNetworking 的 ios 应用程序,可能会帮助您了解发生了什么,因为我不明白

于 2013-07-30T01:28:25.747 回答
0

我的查询()函数是

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 回答
0

您应该使用 LIKE 语法。确保包括%以指示通配符:

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