我有一个函数查询:
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);
我很确定我犯了一个简单的错误,但我似乎无法弄明白。我怎样才能解决这个问题?任何帮助将不胜感激。
答案 0 :(得分:0)
做一些你的方法只从05%返回05部分的东西。然后追加%,例如
$h = $time->getMonth();
$h = "$h%";
然后它应该工作