这是我的数组:
protected static $db_fields = array('id', 'username', 'password');
这是我如何使用它:
protected function attributes(){
$attributes = array();
foreach(static::$db_fields as $field){
$attributes[$field] = $this->$field;
}
return $attributes;
}
这是我使用属性的方式:
protected function create(){
global $database;
$attributes = $this->sanitized_attributes();
$sql = "INSERT INTO " . static::$table_name . " (";
$sql .= join(", ", array_keys($attributes));
$sql .= ") VALUES ('";
$sql .= join("', '", array_values($attributes));
$sql .= "')";
if($database->query($sql)){
$this->id = $database->inserted_id();
return TRUE;
}else{
return FALSE;
}
}
我需要做的就是直接从数据库中生成 db_fields 数组,而不是像我所做的那样手动分配它。我玩弄了“SHOW COLUMNS FROM”表名,但没有任何运气。
显示列:
function attributes(){
global $database;
$attributes = array();
$sql = "SHOW COLUMNS FROM " . static::$table_name;
$result = $database->query($sql);
$db_fields = mysql_fetch_assoc($result);
for($i = 0; $i < mysql_num_rows($result); $i++){
while ($db_fields = mysql_fetch_assoc($result)) {
$attributes[] = $db_fields['Field'];
}
}
return $attributes;
}
我的最终方法应该是一个数组,如:
$db_fields = ('column1_name', 'column2_name', 'column3_name')
我当前的“SHOW COLUMNS”播放的结果是它使用户名的值:用户名,密码:密码......就像列的名称一样。
我相信这是我如何将这些列名称分配给我的数组的问题。那么制作这样一个数组的正确查询是什么?
最后我解决了它:
protected static $db_fields;
function __construct(){
self::generate_attributes();
}
protected static function generate_attributes(){
$sql = "SHOW COLUMNS FROM admins";
$result = mysql_query($sql);
$rows = mysql_fetch_assoc($result);
for($i = 0; $i < mysql_num_rows($result); $i++){
while ($rows = mysql_fetch_assoc($result)) {
self::$db_fields[] = $rows['Field'];
}
}
return self::$db_fields;
}
protected function attributes(){
$attributes = array();
foreach(static::$db_fields as $field){
$attributes[$field] = $this->$field;
}
return $attributes;
}
感谢大家尝试提供帮助。