这是用于添加图片,类别和评论,从电子邮件到我正在工作的相册。
我正在从电子邮件正文中提取找到的前两个类别名称,并需要将类别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';
}从理论上讲,我相信这应该是可行的,但有些地方是不正确的。
有什么建议吗?
发布于 2011-07-14 05:59:54
您最好直接使用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 = $categories[$name]中查找它,就可以找到正确的id。
如果您想生成看起来像这样的代码,可以使用var_export()将$categories变量保存为真正的php代码。是否要生成代码?
发布于 2011-07-14 05:57:18
根本不需要switch语句(您要求的并不是switch语句的用途)。
只需将$cat值存储在描述类别的同一个表中。然后,您只需从该表中进行选择,并且在每一行中都有所需的$value和$cat。
发布于 2011-07-14 05:58:13
执行数据库查询并将结果加载到关联数组中:
$result = mysql_query('SELECT name, id FROM gallery_category');
$categories = array();
while ($row = mysql_fetch_assoc($result))
{
$categories[$row['name']] = $row['id'];
}
foreach ($foundKeywords as $key => $val)
{
if ($key <= 1)
{
$cat = $categories[$val];
// Do whatever processing/output you need to do with this keyword
}
}N.B.:此代码未经测试。
https://stackoverflow.com/questions/6686142
复制相似问题