Tag: sql

参数化查询如何帮助防范SQL注入?

在查询1和2中,文本框中的文本都被插入到数据库中。 这里的参数化查询有什么意义? 1。> ————- SqlCommand cmd = new SqlCommand("INSERT INTO dbo.Cars " +"VALUES(@TagNbr);" , conn); cmd.Parameters.Add("@TagNbr", SqlDbType.Int); cmd.Parameters["@TagNbr"].Value = txtTagNumber.Text; 2。> ————– int tagnumber = txtTagNumber.Text.ToInt16(); /* EDITED */ INSERT into Cars values(tagnumber.Text); /* then is it the same? */ 此外,在这里我会使用正则expression式validation来停止插入非法字符。

不同步的命令; 你现在不能运行这个命令

我试图执行我的PHP代码,通过mysqli调用两个MySQL查询,并得到错误“命令不同步,你现在不能运行这个命令”。 这是我正在使用的代码 <?php $con = mysqli_connect("localhost", "user", "password", "db"); if (!$con) { echo "Can't connect to MySQL Server. Errorcode: %s\n". Mysqli_connect_error(); exit; } $con->query("SET NAMES 'utf8'"); $brand ="o"; $countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %"; if ($numRecords = $con->prepare($countQuery)) { $numRecords->bind_param("s", $brand); $numRecords->execute(); $data = $con->query($countQuery) or die(print_r($con->error)); $rowcount = […]

NOT IN子句和NULL值

这个问题出现时,我得到不同的logging计数为我认为是相同的查询一个使用not in where约束和另一个left join 。 not in约束中的表有一个空值(坏数据),导致查询返回0logging的计数。 我有点理解为什么,但我可以用一些帮助完全理解这个概念。 为了简单说明,为什么查询A返回一个结果,但是B不是? A: select 'true' where 3 in (1, 2, 3, null) B: select 'true' where 3 not in (1, 2, null) 这是在SQL Server 2005上。我还发现, set ansi_nulls off会导致B返回一个结果。

PostgreSQL unnest()与元素编号

当我有一个分隔值的列,我可以使用unnest()函数: myTable id | elements —+———— 1 |ab,cd,efg,hi 2 |jk,lm,no,pq 3 |rstuv,wxyz select id, unnest(string_to_array(elements, ',')) AS elem from myTable id | elem —+—– 1 | ab 1 | cd 1 | efg 1 | hi 2 | jk … 我怎样才能包含元素号码? 即: id | elem | nr —+——+— 1 | ab | 1 1 | […]

参考:什么是使用MySQL扩展的完美代码示例?

这是创build一个社区学习资源 。 目标是要有好的代码示例,不要重复在复制/粘贴的PHP代码中经常发现的可怕错误。 我已经要求它成为社区Wiki。 这不是一个编码比赛。 这不是寻找最快或最紧凑的方法来做一个查询 – 这是提供一个良好的,可读的参考,特别是对于新手。 每天,使用Stack Overflow上的mysql_*系列函数都会有大量的问题,其代码片段很糟糕 。 虽然通常最好把这些人引导到PDO,但是有时候这是不可能的(例如inheritance的遗留软件),也不是现实的期望(用户已经在他们的项目中使用它)。 使用mysql_*库的代码的常见问题包括: SQL注入值 LIMIT子句和dynamic表名中的SQL注入 没有错误报告(“为什么这个查询不起作用?”) 损坏的错误报告(即即使在代码投入生产时也会出现错误) 跨站脚本(XSS)注入值输出 让我们编写一个PHP代码示例,使用mySQL_ *系列函数执行以下操作: 接受两个POST值, id (数字)和name (一个string) 对表tablename执行UPDATE查询,使用ID id更改行中的name列 失败时,退出,但只在生产模式中显示详细的错误。 trigger_error()就足够了; 或者使用您select的方法 输出消息“ $name updated”。 并没有显示上面列出的任何弱点。 它应该尽可能简单 。 它理想上不包含任何函数或类。 目标不是创build复制/可粘贴的库,而是显示为了使数据库查询安全所需完成的工作。 奖金积分好评论。 目标是使这个问题成为用户在遇到问题提问者时可以链接的资源(即使问题根本不是问题的焦点),或者遇到失败的查询,也不会知道如何解决它。 为了抢先PDO讨论: 是的,通常把这些问题写给PDO的人最好。 当这是一个select,我们应该这样做。 然而,这并不总是可能的 – 有时候,提问者正在使用遗留代码,或者已经在这个库中使用了很长时间,现在不太可能改变它。 另外,如果正确使用, mysql_*系列函数是完全安全的。 所以请不要在这里使用PDO。

将标识添加到现有列

我需要将表的主键更改为标识列,表中已经有许多行。 我有一个脚本来清理ID,以确保它们从1开始连续,在我的testing数据库上正常工作。 什么是SQL命令来改变列有一个身份属性?

如何重置MySQL中的AUTO_INCREMENT?

我怎样才能重置字段的auto_increment ? 我希望它从1开始重新计数。

UNION和UNION ALL有什么区别?

UNION和UNION ALL有什么区别?

SQL Query连接Oracle中多行的列值

是否有可能构buildSQL来连接来自多行的列值? 以下是一个例子: 表A PID 一个 乙 C 表B PID SEQ A 1有 2一个不错的 3天。 B 1很好的工作。 C 1是的 C 2我们可以 C 3做 C 4这个工作! SQL的输出应该是 – PID说明 一个愉快的一天。 B很好的工作。 C是的,我们可以做这个工作! 那么基本上输出表的Desc列是来自表B的SEQ值的串联? 任何帮助与SQL?

在SQL Server中删除部分date时间的最佳方法

从SQL Server中的date时间字段中删除时间部分时哪种方法提供最佳性能? a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) 要么 b) select cast(convert(char(11), getdate(), 113) as datetime) 第二种方法确实发送了几个字节,但这可能不如转换速度那么重要。 两者似乎都非常快,但在处理数百或数千行时,速度可能会有所不同。 另外,是否有更好的方法来摆脱SQL中的date时间部分?