PHP问题使用方法的返回值作为查询函数的参数

时间:2014-05-11 12:11:39

标签: php mysql

我有一个函数查询:

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

当我像这样使用它时,该功能正常工作:

$g = "05%";
$result = query("SELECT * FROM table_name WHERE table_column LIKE '%s'", $g);
print json_encode($result);

但是当$ g是从方法中检索的值时,我得不到结果。例如,假设我有一个类Date的方法getMonth(),它返回May的当前月份,当回显时为05%。我尝试下面的代码,从数据库中得不到任何东西:

$time = new Date();
//$g = "05%"; this would definitely get results from the db
$h = $time->getMonth();
echo $h; //this displays 05% on the screen
$result = query("SELECT * FROM table_name WHERE table_column LIKE '%s'", $h);
print json_encode($result);

我很确定我犯了一个简单的错误,但我似乎无法弄明白。我怎样才能解决这个问题?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

做一些你的方法只从05%返回05部分的东西。然后追加%,例如

$h = $time->getMonth(); 
$h = "$h%";

然后它应该工作