我不确定是否可能,但我正在寻找一种方法,使自动"设置" mysql的结果。
function test(){
$pDatabase = Database::getInstance();
$site = new Template("sites.tpl");
$query = 'SELECT * FROM sites';
$result = $pDatabase->query($query) or die('Query failed: ' . mysql_error());
while ($row = mysql_fetch_array($result)) {
$site->set("id",$row['id']);
$site->set("category",$row['category']);
$site->set("name",$row['name']);
$site->set("html",$row['html']);
$site->set("css",$row['css']);
$site->set("js",$row['js']);
$site->set("php",$row['php']);
$site->set("details",$row['details']);
$site->set("link",$row['link']);
}
mysql_free_result($result);
}
也许有更好的方法做所有的$site->设置?我的意思是,我的代码看起来太大,毫无意义。还有其他方法吗?
如果您想在$row
中的所有键/值对上调用$site->set
while ($row = mysql_fetch_array($result)) {
foreach($row as $key => $value) {
$site->set($key,$value);
}
}
改成…假设您的site->set函数将始终使用准确的表列名。
while ($row = mysql_fetch_array($result)) {
foreach($row as $k=>$v){
$site->set($k,$v);
}
}
您也可以修改$site->set函数并在那里执行循环。然后这样做…
while ($row = mysql_fetch_array($result)) {
$site->set($row);
}
和函数。只是一个提纲。不太清楚实际的函数是怎样的。但这只是一个想法
function set($arrorkey, $value=null){
// If passed value is an array, do this...
if(is_array($arrorkey)){
foreach($arrorkey as $k=>$v){
$_SESSION[$k] = $v;
//Or database binding or whatever you're actually doing inside here
}
} else {
// If passed value, is a column, and value pair...do this.
$_SESSION[$arrorkey]=$value;
//Or database binding or whatever you're actually doing inside here
// This is just an example
}
return;
}