親愛的所有。消毒整數時使用intval&real_escape_string
我在mysql數據庫的某些表中使用整數PK。在從PHP腳本輸入之前,我正在做一些清理,包括intval($ id)和$ mysqli-> real_escape_string()。
的查詢是很簡單
insert into `tblproducts`(`supplier_id`,`description`) values('$supplier_id','$description')
在這個例子中,$說明經過real_escape_string(),而$ supplier_id僅是INTVAL()「版。
我只是好奇,如果有任何情況,當我需要將intval和real_escape_string應用於我插入到數據庫的整數?所以基本上我真的需要使用?
$supplier_id = intval($mysqli->real_escape_string($supplier_id));
謝謝。
如果您要使用準備好的語句,所有額外的消毒和確保數據類型的努力將是多餘的。非常容易。 – mario
謝謝你的評論。最初,DB類是在沒有預先聲明的情況下開發的,因此我需要重構基礎類,而不是同時打破工作基礎結構。因此,我正在考慮切換到準備聲明,因爲您提到的原因,但不是直接:) – paulus
此外,據我所知,prep語句在大規模查詢中最有用,通常情況下不是這樣我的情況。因此,基本上切換到準備語句會增加(肯定不會減少)代碼量=>因此,可讀性和性能降低也受到質疑。在我看來,偶爾int和real_escape_strings會比prepare statement => bind => execute更快。除非我會開發某種超級元數據庫類來處理所有查詢,在我的情況下這意味着從頭開始重寫代碼。 – paulus