嗨,我有一个数组,我想把一个变量传递给一个函数。
'#\@(.*?)\;#si' => 'some before text' . retrieveName('$1') . 'some after text,'
function retrieveName($poster_id){
$sanitized_id = sanitizeIn($poster_id);
$getname = mysql_query("SELECT * FROM users WHERE userid = '$sanitized_id';")
or die(mysql_error());
$namerow = mysql_fetch_array($getname);
$exists = mysql_num_rows($getname);
if($exists == "0"){
return $sanitized_id;
} else {
return $namerow['username'];
}
}它应该取$1的值,在数据库中查找具有该id的用户,然后返回他们的用户名。但是没有参数传递给retrieveName
发布于 2012-07-09 14:13:08
retrieveName函数应为:
function retrieveName($poster_id){
$sanitized_id = sanitizeIn($poster_id);
$get_name = mysql_query("SELECT * FROM users WHERE userid = '$sanitized_id';") or die(mysql_error());
$name_row = mysql_fetch_array($get_name);
return $name_row['username'];
}我强烈建议在那里放置一些错误检查,但如果找不到ID会发生什么?
编辑:
如果你正在尝试做一个"preg_replace模板“,那么这行代码应该是:
'#@(.*?);#sie' => '"some before text".retrieveName("\1")."some after text"',在修饰符中使用“e”来执行代码。
这应该改变,例如,"Hello,@lserni;,怎么样?“带有"Hello,some goes Sernisome after text,how goes?“
https://stackoverflow.com/questions/11389811
复制相似问题