MySQL 非常強大和靈活的一個特點就是它允許用戶在查詢中使用參數(shù)。參數(shù)允許查詢語句更具通用性,同時也可以幫助防止 SQL 注入攻擊。
在 MySQL 中,可以使用類似如下的方式傳遞參數(shù):
SELECT * FROM my_table WHERE column1 = ?
上述語句中的問號就代表了一個參數(shù)。在查詢執(zhí)行時,該參數(shù)將會被替換為實際的數(shù)值或字符串。
你可以使用預處理語句來設置這個參數(shù)的值。比如,使用 PHP 就可以通過以下方式來傳遞參數(shù):
// 設置需要查詢的值
$value = 'foo';
// 創(chuàng)建 MySQL 連接
$mysqli = new mysqli('localhost', 'username', 'password', 'my_database');
// 準備查詢語句
$stmt = $mysqli->prepare('SELECT * FROM my_table WHERE column1 = ?');
// 綁定參數(shù)
$stmt->bind_param('s', $value);
// 執(zhí)行查詢
$stmt->execute();
// 獲取結(jié)果集
$result = $stmt->get_result();
// 遍歷結(jié)果集
while ($row = $result->fetch_assoc()) {
// 處理每一行數(shù)據(jù)
}
在上述代碼中,bind_param() 函數(shù)用于綁定參數(shù),第一個參數(shù)指定了參數(shù)的類型(s 表示字符串類型),第二個參數(shù)是需要傳遞的值。
使用參數(shù)的查詢語句不僅可以避免 SQL 注入攻擊,也可以使查詢更為通用,因為可以在不同的查詢中復用傳遞的參數(shù)。