gpt4 book ai didi

php - 我想生成一个列名数组以将其分配为我的类的属性..有什么想法吗?

转载 作者:行者123 更新时间:2023-11-29 03:05:52 24 4
gpt4 key购买 nike

这是我的数组:

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

我的 final方法应该是一个像这样的数组:

$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;
}

感谢大家的帮助。

最佳答案

试试怎么样

SELECT `column_name` FROM `information_schema`.COLUMNS WHERE TABLE_NAME = 'yourtable';

您的数据库用户将需要对 information_schema 的读取权限。

如果需要,您还可以使用 GROUP_CONCAT 创建逗号分隔的字符串。

SELECT GROUP_CONCAT(c.column_name) FROM `information_schema`.COLUMNS c WHERE TABLE_NAME = 'yourtable';

关于php - 我想生成一个列名数组以将其分配为我的类的属性..有什么想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15401515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com