参数化查询的SQL 指令撰写方法
在撰写 SQL 指令时,利用参数来代表需要填入的数值,例如: Microsoft SQL Server 的参数格式是以 @ 字符加上参数名称而成,SQL Server 亦支持匿名参数 ?。
SELECT * FROM myTable WHERE myID = @myID
INSERT INTO myTable (c1, c2, c3, c4) VALUES (@c1, @c2, @c3, @c4) Microsoft Access 不支持具名参数,只支持匿名参数 ?。
UPDATE myTable SET c1 = ?, c2 = ?, c3 = ? WHERE c4 = ? MySQL 的参数格式是以 ? 字符加上参数名称而成。
UPDATE myTable SET c1 = ?c1, c2 = ?c2, c3 = ?c3 WHERE c4 = ?c4 SqlCommand sqlcmd = new SqlCommand(INSERT INTO myTable (c1, c2, c3, c4) VALUES (@c1, @c2, @c3, @c4), sqlconn);
sqlcmd.Parameters.AddWithValue(@c1, 1); // 设定参数 @c1 的值。
sqlcmd.Parameters.AddWithValue(@c2, 2); // 设定参数 @c2 的值。
sqlcmd.Parameters.AddWithValue(@c3, 3); // 设定参数 @c3 的值。
sqlcmd.Parameters.AddWithValue(@c4, 4); // 设定参数 @c4 的值。
sqlconn.Open();
sqlcmd.ExecuteNonQuery();
sqlconn.Close(); $query = sprintf(SELECT * FROM Users where UserName='%s' and Password='%s',
mysql_real_escape_string($Username),
mysql_real_escape_string($Password));
mysql_query($query);
或是
$db = new mysqli(localhost, user, pass, database);
$stmt = $mysqli -> prepare(SELECT priv FROM testUsers WHERE username=? AND password=?);
$stmt -> bind_param(ss, $user, $pass);
$stmt -> execute(); PreparedStatement prep = conn.prepareStatement(SELECT * FROM USERS WHERE USERNAME=? AND PASSWORD=?);
prep.setString(1, username);
prep.setString(2, password); <cfquery name=Recordset1 datasource=cafetownsend>
SELECT *
FROM COMMENTS
WHERE COMMENT_ID =<cfqueryparam value=#URL.COMMENT_ID# cfsqltype=cf_sql_numeric>
</cfquery>
2024-11-30 广告