我有这样的代码(删除PARAM逃逸只是削减了一些代码):PHP MySQL如何组织这段代码?
private function _get_tag_id($value)
{
$sql = "INSERT INTO tags (tag, added) VALUES ('$value', ".time().") "
. "ON DUPLICATE KEY UPDATE tag_id = tag_id";
$id = execute($sql);
if (empty($id))
{
$sql = "SELECT tag_id FROM tags WHERE tag = '$value'";
$id = execute($sql);
}
return $id;
}
我在整理我的代码真的不好,我一直在阅读关于保持你的代码干的重要性。这是否包括您可能有的任何疑问?例如,我需要执行这些相同的查询了几场,和我做了什么是它改成这样:
private function _get_field_id($field, $value)
{
$sql = "INSERT INTO {$field}s ({$field}, added) VALUES ('$value', ".time().") "
. "ON DUPLICATE KEY UPDATE {$field}_id = {$field}_id";
$id = execute($sql);
if (empty($id))
{
$sql = "SELECT {$field}_id FROM {$field}s WHERE {$field} = '$value'";
$id = execute($sql);
}
return $id;
}
虽然减少了一些类似的功能,这也使得查询更难阅读首先。这样做后的另一个问题是,如果有时查询可能会略微不同的字段?比方说,如果该字段是标签,我不需要添加的列更多的,也许现在的查询将变为:
$sql = "INSERT INTO {$field}s ({$field}".($field == 'tag' ? '' : ", added").") "
. "VALUES ('$value', ".($field == 'tag' ? '' : time()).") "
. "ON DUPLICATE KEY UPDATE {$field}_id = {$field}_id";
现在它开始获得额外的乱,但我有一种感觉,人不”实际上是这样做的。
我读过的另一件事是功能应该只做一件事。那么我会如何切断这个功能?
private function _get_tag_id($value)
{
$id = $this->_add_tag_id($value);
if (empty($id))
{
$id = $this->_get_tag_id($value);
}
return $id;
}
还是会更好地保持原来的样子?
如果你不认为要么。我试图组织代码是正确的,也觉得免费建议你去做,或者换句话说方式会是什么组织这些简单的最佳方式方法代码位?
谢谢您的回答,虽然我的问题主要是问我是不是应该被重复的查询代码,以及我是否应该掰开我的功能,更小的功能。对于你的建议,我不认为我会离开MySQL,所以我不认为这会是一个问题。我会考虑使用1号。 – Joker 2011-01-12 22:37:55