php - 如何从 MySQL 查询创建动态 PHP switch 语句

标签 php mysql switch-statement

这是为了将电子邮件中的图像、类别和评论添加到我正在处理的照片库中。

我正在从电子邮件正文中提取前两个找到的类别名称,并且需要将类别 ID 分配给 $cat 变量以插入到数据库中。

我让它在硬编码中工作得很好,但我想让它动态化,这样对类别名称的更改就会级联到整个过程中。

我要更改的 switch 语句:

硬编码:

foreach($foundKeywords as $key => $value) {  
            if($key<=1){

switch($value)
        {
            case 'family':
            $cat='3';
            break;
            case 'friends';
            $cat='4';
            break;
            case 'fun';
            $cat='6';
            break;
            case 'places';
            $cat='5';
            break;
            case 'general';
            $cat='2';
            break;
            case 'henry';
            $cat='7';
            break;
            default;
            $cat='2';
        }

我想从 MySQL 表中提取类别并按以下方式执行:

$res = mysql_query('SELECT * FROM gallery_category');
            $cat_switch_list = "";
            while($row = mysql_fetch_array($res)){
                $cat_switch_list .= "case '".$row[1]."':
                                    $cat = ".$row[0].";
                                    break;";
            }
            //////////////////////
            foreach($foundKeywords as $key => $value) {  
                if($key<=1){


                    switch($value)
                    {
                        echo $cat_switch_list;
                        default:
                        $cat='1';
                    }

理论上,我认为这应该可行,但有些地方不对。

有什么建议吗?

最佳答案

最好直接用mysql查询:

mysql_query('select id from gallery_category where name=\''.mysql_real_escape($name).'\'');

或者通过从你的结果生成一个数组:

$result = mysql_query('select * from gallery_category');
$categories = array();
while($row = mysql_fetch_num($result))
{
  $categories[$row[1]] = $row[0];
}

然后您只需在类别数组中查找即可找到正确的 ID:$id = $categories[$name]

如果你想生成代码并且看起来像,你可以使用 var_export() 将 $categories 变量保存到真正的 php 代码中。您要生成代码吗?

关于php - 如何从 MySQL 查询创建动态 PHP switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6686142/

相关文章:

php - 将 Symfony 3 应用程序连接到( Asterisk 服务器)中的外部 SQL 数据库

MySQL GROUP_CONCAT 和 ORDER 以及合并列的帮助请

php - 实体类中的 Getter & Setter + Symfony2

php - 选择每种类型的多个项目

php - 如何使用 WHERE 条件的 2 个数据数组更新此查询

mysql - col LIKE BINARY 'val%' 比 col LIKE 'val%' 慢得多。为什么?

Swift:似乎不允许比较字符串?用一个字符串?

java - 程序错误识别字符

c - C 中 SWITCH CASE 中的多个字符

php - 让 mysql 查询与具有 namespace 的类一起使用