而不是我的查詢是像/search.php?cat=2,我想它而不是/search.php?cat=SomeName。有沒有一種標準的方式來將查詢從一個ID交換到不同的列,如'名稱'?
我剛開始學習PHP和MYSQL,當然感覺有很多我不知道的標準實踐。我只是得到了一些東西(你可能不同意;),並且把一個函數交換到一個函數中,這個函數可以用於ID的ID,它正在工作。
有沒有更標準的做法呢?
工作代碼:
function swap_name_for_id($name, $search) {
global $connection;
if ($search == 'category') {
$query = "SELECT categories.id, categories.name
FROM categories
WHERE categories.name = '{$name}'";
}
$swap_set = mysqli_query($connection, $query);
confirm_query($swap_set);
while ($swap = mysqli_fetch_array($swap_set)) {
$search_id = $swap["id"];
}
return $search_id;
}
function get_parts_for_category($category_name) {
$category_id = swap_name_for_id($category_name, 'category');
global $connection;
$query = "SELECT parts.id, parts.name, parts. part_category
FROM parts
WHERE part_category = {$category_id}
ORDER BY name ASC";
$part_set = mysqli_query($connection, $query);
confirm_query($part_set);
return $part_set;
}
任何時候你接受用戶提供的輸入並將其烘焙到一些SQL中,一定要確保用戶提供的值避免了一種稱爲SQL注入的攻擊類型 –
您是對的,它在我的列表中。我還沒有到了學習安全的細節。即使他們在此實例中從下拉列表中選擇了一個類別,我仍然認爲它仍然是一個問題,因爲用戶仍然可以在查詢字符串的地址欄中鍵入他們想要的任何內容嗎? – ryansommers
是的,一個好方法是使用查詢實用程序方法的數據庫庫,該方法總是會轉義用戶提供的值。 PHP框架codeigniter帶有這樣一個類。 –