0
皆さん、私はレポートのクエリを書いています。パラメータが多いので、いくつかの関数を書くことにしました。PHP - 関数を使ってSQLクエリを書く
私のwhere節の1つでは、私は節の始めを書いて、次に私の配列にすべての項目を書き込んだ後、次の節を閉じる関数を書いた。これは、関数である:
function checkStatuses() {
global $status;
echo " tl.task_log_status in (";
foreach ($status as $option) {
echo "'$option', ";
}
echo "'60') AND";
}
以下
私のクエリです:私は何が起こっているのか確認するために$sql
をエコー、それは次のように示し
$sql = "SELECT co.company_name as EMPRESA,
p.project_name as PROJETO,
p.project_code as CODIGO,
tk.task_name as TAREFA,
concat(c.contact_first_name,' ',c.contact_last_name) as USUARIO,
DATE_FORMAT(tl.task_log_date, '%d/%m/%Y') as DATA,
tl.task_log_description as DESCRICAO,
tl.task_log_hours as HORAS_REPORTADAS,
tl.task_log_costcode as CODIGO_CUSTO
FROM dotp_task_log tl, dotp_companies co, dotp_tasks tk, dotp_projects p, dotp_users u, dotp_contacts c
WHERE tk.task_id = tl.task_log_task
AND
p.project_id = tk.task_project
AND
u.user_id = tl.task_log_creator
AND
c.contact_id = u.user_contact
AND
co.company_id = p.project_company
AND
co.company_id = $company
AND
$project_code
AND
$status_code
tl.task_log_date BETWEEN '$initial_date' AND '$end_date'
ORDER BY
tl.task_log_date";
右このコードの下:
tl.task_log_status in ('0', '1', '3', '2', '60') ANDSELECT co.company_name as EMPRESA,
p.project_name as PROJETO,
p.project_code as CODIGO,
ご覧のとおり、$sql
変数の前にwhere句が書かれています。それはなぜですか?私の例では、変数$status_code = checkStatuses();
を宣言しましたが、それは機能しませんでした。関数を直接呼び出すことも、一重引用符から二重引用符に変更することもありません。正しい位置にwhere句の一部を表示する唯一の方法は、関数のechoをリターンに置き換えることでしたが、そこに複数のリターンを入れることはできません(関数は実行を終了し、句の一部は行方不明)。何か案は?