私はこのコード(ちょうどいくつかのコードを削減するためにエスケープ削除のparam)持っている:私は自分のコードを整理する時に本当に悪いんだと私はあなたのコードのDRYを保つことの重要性について読んでいる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;
}
それはいくつかの同様の機能を減少させるが、それはまた読みクエリははるかに困難になります最初は。これを行った後のもう1つの問題は、フィールドでクエリが若干異なる場合があります。フィールドがタグであれば、私はそれ以上の追加の列を必要としない、多分クエリが今まで変わってしまうとしましょう:
$sql = "INSERT INTO {$field}s ({$field}".($field == 'tag' ? '' : ", added").") "
. "VALUES ('$value', ".($field == 'tag' ? '' : time()).") "
. "ON DUPLICATE KEY UPDATE {$field}_id = {$field}_id";
今「余分な厄介取得し始めていますが、私は人々がドン感を持っています実際にそれを行う。
私が読んだもう1つのことは、関数は1つのことを行うだけであるということです。だから私はこのようなこの機能を切り詰めるだろうか?
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