ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PHP-Phalcon获取枚举值

2019-11-20 14:15:33  阅读:217  来源: 互联网

标签:phalcon mysql php


我正在使用很多具有“枚举”和“设置”类型的列的数据库.我的观点是要在Phalcon控制器中获取列的值.我发现了一些代码片段,但是在Phalcon中却没有任何内容,当我尝试执行它们时,似乎Phalcon出现了一些问题.

public function getEnumValues(){
    $sql  = "SHOW COLUMNS FROM profiles LIKE 'eyes_color'";

    $query = new \Phalcon\Mvc\Model\Query($sql, $this->getDI());
    $result = $query->execute();

    return $result;
}

返回值:

Syntax error, unexpected token IDENTIFIER(SHOW), near to ‘ COLUMNS FROM profiles LIKE ‘eyes_color”, when parsing: SHOW COLUMNS FROM profiles LIKE ‘eyes_color’

方法二:

public function getEnumValues(){
    $sql = "SELECT COLUMN_TYPE FROM COLUMNS WHERE TABLE_NAME = 'profiles' AND COLUMN_NAME = 'hair_color'";

    $query = new \Phalcon\Mvc\Model\Query($sql, $this->getDI());
    $result = $query->execute();

    return $result;
}

返回值:

Model ‘COLUMNS’ could not be loaded

我将不胜感激.

解决方法:

这是您需要的工作版本:

$config = $this->getDI()->get('config');
$pdo    = new \Phalcon\Db\Adapter\Pdo\Mysql([
    "host"     => $config->database->host,
    "username" => $config->database->username,
    "password" => $config->database->password,
    "dbname"   => $config->database->dbname,
]);
$sql = "
    SELECT TRIM(TRAILING ')' FROM SUBSTRING(COLUMN_TYPE,6)) AS enum_list
    FROM information_schema.COLUMNS
    WHERE TABLE_SCHEMA='my_db_name'
        AND TABLE_NAME='my_table_name'
        AND COLUMN_NAME='my_column_name'
";
$result    = $pdo->query($sql)->fetch();
$enumArray = array();
if (!empty($result['enum_list'])) {
    $enumArray = explode(',', $result['enum_list']);
    foreach ($enumArray as &$value) {
        $value = trim($value, "'");
    }
}
echo "<pre>"; var_dump($enumArray); die;

标签:phalcon,mysql,php
来源: https://codeday.me/bug/20191120/2044544.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有