2013-02-12 71 views
0

例如筆者使用的在PHP中使用mysqli來防止SQL注入就夠了嗎?

$building_name = $_POST['BuildingName']; 
$metering_type = $_POST['MeteringType']; 
$query = "INSERT INTO buildings (BuildingName, MeteringType) 
         VALUES ('$building_name', '$metering_type')"; 
if(mysqli_query($link, $query)) 
{ 
    echo json_encode(Array("success"=>true)); 
} 

而且我相信,這使我從SQL注入。我安全嗎?

回答

2

甚至準備好的陳述在很多情況下還不夠或極其困難。
例如,您無法準備標識符。

所以,最好使用一些智能庫,而不是原始的API,讓你的代碼安全短:

$sql = "INSERT INTO buildings (BuildingName, MeteringType) VALUES (?s, ?s)"; 
$res = $db->mysqli_query($sql, $_POST['BuildingName'], $_POST['MeteringType']); 
if(res) 
{ 
    echo json_encode(Array("success"=>true)); 
} 

但是,如果你仍然想堅持原始API - 最好去PDO而不是mysqli。它會爲你節省一大堆頭痛。