如何减少此代码?

时间:2010-01-18 06:31:58

标签: php

有没有办法缩短这段代码:

$resultCategoryName = mysql_query("SELECT ecname FROM electioncategorymaster WHERE ecid=".$Category);
$rowCategoryName = mysql_fetch_row($resultCategoryName);
$CategoryName = $rowCategoryName[0];

7 个答案:

答案 0 :(得分:3)

也许您应该考虑使用某种ORM。 Zend_Db有一种方法可以从查询中获取单个值。

$ecname = $db->fetchOne("SELECT ecname FROM electioncategorymaster WHERE ecid = ?", $Category);

答案 1 :(得分:2)

没有。由于PHP存在缺陷,因此无法实现以下目标:

$CategoryName = mysql_fetch_row($resultCategoryName)[0];

答案 2 :(得分:1)

我不认为它可以进一步减少。所有功能都在最低级别执行任务。您只能缩短变量名称:)

答案 3 :(得分:1)

您可以使用mysql_result分两步获取categroyName。


$resultCategoryName = mysql_query("SELECT ecname FROM electioncategorymaster WHERE ecid=".$Category);
$categoryName = mysql_result($resultCategoryName, 0); //Extract First column

以下是参考link

答案 4 :(得分:0)

我不是PHP大师,但也许你应该为每个表使用框架或类。

我不认为代码本身可以减少。

答案 5 :(得分:0)

$rowCategoryName = mysql_fetch_row(mysql_query("SELECT ecname FROM electioncategorymaster WHERE ecid=$Category"));
$CategoryName = $rowCategoryName[0];

这是我能想到的最短的。你真的应该做SELECT ecname FROM electioncategorymaster WHERE ecid='$Category'"(在变量周围加上单引号)。

答案 6 :(得分:0)

这就是我这样做的方式。我使用sprintf确保只将数值作为id传递。我还使用LIMIT 1附加SQL发送,以确保只获取一条记录。

$r = mysql_fetch_row(mysql_query(
sprintf("SELECT * FROM <sometable> WHERE id = %d LIMIT 1",intval($id))
,$connection));