我認爲這只是一種偏好。我通常使用簡短的方式和「unvarying」請求。
但對於較長的請求,它更容易閱讀和維護分開。
特別是對於「動態請求」(部分取決於外部條件):它有時更容易在一根繩子上的工作,例如在所有連接一where
條款,或其他,或無,取決於條件。
我想到的一個例子是:如果使用get參數?cat=foo
進行調用,則使用「list.php」腳本顯示所有文章(如果不帶參數調用),並篩選特定類別「foo」的文章。 我個人覺得更容易閱讀和維護這樣的:
$query="select name, description, price from articles";
if(isset($_GET['cat'])) $query.=" where cat={$_GET['cat']}";
$result = mysqli_query($dbconnect,$query);
當然,它也可以直接在一個行版採用三元(?:)
運營商完成,但隨後可讀性遭受了一下:
$result = mysqli_query($dbconnect,"select name, description, price from articles".(isset($_GET['cat'])?" where cat={$_GET['cat']}":""));
如果添加其他條件,它變得更加難以理解和難以維護。例如,獲取參數'?supplier = bar「的第二個過濾器...
[編輯:]我只是有這樣的情況:當你的請求失敗時,它是更容易調試當查詢站在一個字符串。一個簡單的echo $query;
讓你看到你發送到DB服務器到底是什麼...
在下面的PHP代碼:$query="select * from $userTable where id=:uid";
,你可能會負責監督$userTable
沒有定義...
而是一個echo $query;
後,可以沒有監督,這裏有什麼缺失:$query="select * from where id=:uid";
...
這是一個*「對他們自己的」*。 Poh-tay-toe,poh-tah-toe。 –
可讀性似乎相當不錯。另請參閱準備好的陳述。 – Strawberry
對於第一個可能是由於每行字符數量的舊限制。但它不再是一個很好的理由。 – Debflav