Tag: sql

参数化SQL IN子句

我如何参数化一个查询包含一个可变数量的参数的IN子句,就像这个? SELECT * FROM Tags WHERE Name IN ('ruby','rails','scruffy','rubyonrails') ORDER BY Count DESC 在这个查询中,参数的个数可以是1到5之间的任意值。 我不希望为这个(或XML)使用一个专用的存储过程,但是如果有一些针对SQL Server 2008的优雅方式,我可以这么做。

将许多行连接成单个文本string?

考虑一个包含三行的数据库表: Peter Paul Mary 有没有简单的方法把它变成Peter, Paul, Mary一串?

在每个GROUP BY组中select第一行?

正如标题所暗示的,我想select用GROUP BY分组的每一组行的第一行。 具体来说,如果我有一个purchases表,看起来像这样: SELECT * FROM purchases; id | 客户| 总 — + ———- + —— 1 | 乔| 五 2 | 莎莉| 3 3 | 乔| 2 4 | 莎莉| 1 我想查询每个customer所做的最大购买( total )的id 。 像这样的东西: SELECT FIRST(id), customer, FIRST(total) FROM purchases GROUP BY customer ORDER BY total DESC; FIRST(id)| 客户| FIRST(总) ———- + […]

SQL只select列上具有最大值的行

我有这张表格(这里是简体版): +——+——-+————————————–+ | id | rev | content | +——+——-+————————————–+ | 1 | 1 | … | | 2 | 1 | … | | 1 | 2 | … | | 1 | 3 | … | +——+——-+————————————–+ 我如何select每行一个行,只有最大的转? 有了上述数据,结果应该包含两行: [1, 3, …]和[2, 1, ..] 。 我正在使用MySQL 。 目前我在while循环中使用检查来检测和覆盖结果集中的旧版本。 但是这是实现结果的唯一方法吗? 是不是有一个SQL解决scheme? 更新 正如答案所示,有一个SQL解决scheme, 这里是一个sqlfiddle演示 […]

清理用户密码

在散列和存储在我的数据库之前,我应该如何转义或清理用户提供的密码? 当PHP开发人员出于安全目的考虑对用户密码进行哈希处理时,他们通常倾向于将这些密码视为其他用户提供的数据。 这个问题经常出现在与密码存储相关的PHP问题中; 开发人员通常希望在使用escape_string() (在各种迭代中), htmlspecialchars() , addslashes()等函数来清理密码并将其存储在数据库中之前,开发人员通常要清理密码。

如何从“Bobby Tables”XKCD漫画工作SQL注入?

只是看着: (来源: https : //xkcd.com/327/ ) 这个SQL做什么: Robert'); DROP TABLE STUDENTS; — 我知道'和–都是为了评论,但是DROP这个词不会被评论,因为它是同一行的一部分?

SQL注入绕过mysql_real_escape_string()

即使使用mysql_real_escape_string()函数,是否有SQL注入的可能性? 考虑这个示例情况。 SQL是像这样在PHP中构build的: $login = mysql_real_escape_string(GetFromPost('login')); $password = mysql_real_escape_string(GetFromPost('password')); $sql = "SELECT * FROM table WHERE login='$login' AND password='$password'"; 我听到很多人都对我说,即使使用了mysql_real_escape_string()函数,这样的代码仍然是危险的,可能会被破解。 但我想不出任何可能的利用? 这样的经典注射: aaa' OR 1=1 — 不工作。 你知道任何可能通过上面的PHP代码注入?

何时在MySQL中使用单引号,双引号和反引号

我正在尝试学习编写查询的最佳方法。 我也明白一致的重要性。 到现在为止,我没有任何真正的想法,随机使用单引号,双引号和反引号。 例: $query = 'INSERT INTO table (id, col1, col2) VALUES (NULL, val1, val2)'; 另外,在上面的例子中,考虑"table," "col[n]," and "val[n]"可能是variables。 这是什么标准? 你是做什么? 我已经在这里阅读了大约20分钟的类似问题的答案,但是似乎这个问题没有明确的答案。

我怎样才能防止在PHP中的SQL注入?

如果用户input未经修改而插入到SQL查询中,则该应用程序易受SQL注入的影响 ,如下例所示: $unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')"); 这是因为用户可以input类似的value'); DROP TABLE table;– value'); DROP TABLE table;– ,查询变成: INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;–') 可以做些什么来防止这种情况发生?

LINQ to SQL中的内部连接的语法是什么?

我正在编写一个LINQ to SQL语句,并且在C#中使用ON子句的正常内连接的标准语法。 如何在LINQ to SQL中表示以下内容: select DealerContact.* from Dealer inner join DealerContact on Dealer.DealerID = DealerContact.DealerID